[Backend] ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ฑ๋Šฅ ์ตœ์ ํ™” ์ข…๋ฅ˜

2025. 4. 27. 02:30ยท๐Ÿ› ๏ธBackend

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ฑ๋Šฅ ์ตœ์ ํ™”๋ž€

  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜: ์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•œ ํ”„๋กœ๊ทธ๋žจ์„ ์˜๋ฏธํ•œ๋‹ค.
  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์„ฑ๋Šฅ์„ ๊ฐœ์„ ํ•˜์—ฌ ์š”์ฒญ์— ๋”ฐ๋ฅธ ์‘๋‹ต์„ ๋น ๋ฅด๊ณ  ํšจ์œจ์ ์œผ๋กœ ์ฃผ๊ธฐ ์œ„ํ•œ ์ตœ์ ํ™”๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

โœ… 1. ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ์ตœ์ ํ™”

  • ๋ถˆํ•„์š”ํ•œ ์ฝ”๋“œ ์ œ๊ฑฐ: ๋ฐ˜๋ณต์ ์œผ๋กœ ์ˆ˜ํ–‰๋˜๋Š” ๋ถˆํ•„์š”ํ•œ ์ฝ”๋“œ๋ฅผ ์ œ๊ฑฐํ•จ์œผ๋กœ์จ, ์—ฐ์†์„ ์ตœ์†Œํ™”
  • ํšจ์œจ์ ์ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์‚ฌ์šฉ: ๋” ๋‚˜์€ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ€์ง„ ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ๋Œ€์ฒด

โœ… 2. DB ์ตœ์ ํ™”

  • ์ฟผ๋ฆฌ ์ตœ์ ํ™”: ๋น„ํšจ์œจ์ ์œผ๋กœ ์ž‘์„ฑ๋œ DB ์ฟผ๋ฆฌ ๊ฐœ์„  ( ์˜ˆ์‹œ: ์ธ๋ฑ์Šค ์ถ”๊ฐ€, ์ฟผ๋ฆฌ ๋ฆฌํŒฉํ† ๋ง, ์กฐ์ธ ์ตœ์ ํ™” )
  • ์ปค๋„ฅ์…˜ ํ’€: DB์™€์˜ ์—ฐ๊ฒฐ์„ ์žฌํ™œ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์ปค๋„ฅ์…˜ ํ’€(HikariCP ๋“ฑ)์„ ์„ค์ •ํ•˜์—ฌ DB ์ปค๋„ฅ์…˜ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌ
  • N+1 ๋ฌธ์ œ ํ•ด๊ฒฐ: JPA๋‚˜ ORM์—์„œ ๋ฐœ์ƒํ•˜๋Š” N+1 ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜์—ฌ DB ์š”์ฒญ ์ตœ์†Œํ™”

โœ… 3. ์บ์‹ฑ

  • ๋ฐ์ดํ„ฐ ์บ์‹ฑ: ์ž์ฃผ ์กฐํšŒ๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅํ•˜์—ฌ DB๋‚˜ ์™ธ๋ถ€ API ์š”์ฒญ์„ ์ค„์ž„(Redis, Memcached)
  • ์‘๋‹ต ์บ์‹ฑ: HTTP ์‘๋‹ต์„ ์บ์‹œํ•˜์—ฌ ๋™์ผํ•œ ์š”์ฒญ์— ๋Œ€ํ•ด ์„œ๋ฒ„์˜ ๋ถ€๋‹ด์„ ์ค„์ž„.

โœ… 4. ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ

  • ๋น„๋™๊ธฐ I/O: I/O ์ž‘์—…์„ ๋น„๋™๊ธฐ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜์—ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋‹ค๋ฅธ ์ž‘์—…์„ ๋™์‹œ์— ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•จ.
  • ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ฒ˜๋ฆฌ: ์ด๋ฉ”์ผ ๋ฐœ์†ก, ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ๋“ฑ ๊ธด ์‹œ๊ฐ„ ์ž‘์—…์„ ๋น„๋™๊ธฐ๋กœ ์ฒ˜๋ฆฌํ•˜์—ฌ ์ฃผ์š” ํŠธ๋žœ์žญ์…˜์— ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š๊ฒŒ ํ•จ.

[ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ฒ˜๋ฆฌ ]

[ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ฒ˜๋ฆฌ - ์‹ค์ œ ํ๋ฆ„ ์˜ˆ์‹œ (์ฃผ๋ฌธ ์‹œ์Šคํ…œ) ]
1. ์ฃผ๋ฌธ ์š”์ฒญ -> ์„œ๋ฒ„
2. ์ฃผ์š” ํŠธ๋žœ์žญ์…˜
    - ์ฃผ๋ฌธ ์ •๋ณด๋ฅผ DB์— ์ €์žฅ
    - ๊ฒฐ์ œ ์Šน์ธ
3. DB commit ์™„๋ฃŒ -> ํŠธ๋žœ์žญ์…˜ ๋
4. ์‘๋‹ต ์ „์†ก
    - ์ฃผ๋ฌธ ์™„๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค ๋ฐ”๋กœ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ฆฌํ„ด
5. ๋ถ€๊ฐ€ ์ž‘์—…(๋ฐฑ๊ทธ๋ผ์šด๋“œ)
    - ์ฃผ๋ฌธ์™„๋ฃŒ ์ด๋ฉ”์ผ ๋ฐœ์†ก
    - ์ฃผ๋ฌธ์™„๋ฃŒ ์•Œ๋ฆผ ๋ฉ”์‹œ์ง€ ์ „์†ก
    - ์ ๋ฆฝ๊ธˆ ์ ๋ฆฝ ๋“ฑ
  • ํ•˜๋‚˜์˜ ํŠธ๋žœ์žญ์…˜์•ˆ์— ์—ฌ๋Ÿฌ๊ฐœ์˜ ์ž‘์—…์ด ๋ฌถ์—ฌ์žˆ๋Š” ๊ฒฝ์šฐ, ์‚ฌ์šฉ์ž๋Š” ๋ถ€๊ฐ€ ์ž‘์—…์ด ์ˆ˜ํ–‰๋˜๊ธฐ๋ฅผ ๊ธฐ๋‹ค๋ ค์•ผํ•จ.
  • ๋ฉ”์ธ ์ž‘์—…์ธ ์ฃผ๋ฌธ์— ๋Œ€ํ•œ ๊ฒฐ์ œ๋ฅผ ์ฒ˜๋ฆฌํ•œ ๋’ค ์ด๋ค„์ง€๋Š” ๋ถ€๊ฐ€ ์ž‘์—…์„ ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ์ฒ˜๋ฆฌํ•จ์œผ๋กœ์จ ์ตœ์ ํ™”
  • ์˜ˆ์‹œ: ์Šคํ”„๋ง์—์„  @Async ์• ๋„ˆํ…Œ์ด์…˜ ์ด์šฉ, ํ•˜์ง€๋งŒ ๋ฉ”์‹œ์ง€ ํ๋ฅผ ์“ฐ๋Š”๊ฒŒ ๋” ์•ˆ์ •์ ์ด๊ณ  ํ™•์žฅ์„ฑ์ด ์ข‹์Œ.

โœ… 5. ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ ๋ฐ ์“ฐ๋ ˆ๋“œํ’€ ๊ด€๋ฆฌ

  • ์“ฐ๋ ˆ๋“œํ’€ ์„ค์ •: ์„œ๋ฒ„์— ๋™์‹œ์— ์—ฌ๋Ÿฌ ์š”์ฒญ์ด ๋“ค์–ด์˜ฌ ๋•Œ, ํšจ์œจ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ์ ์ ˆํ•œ ์“ฐ๋ ˆ๋“œํ’€์„ ์„ค์ •
  • ์Šค๋ ˆ๋“œ ๋ณ‘๋ชฉ ํ•ด๊ฒฐ: ๋ถˆํ•„์š”ํ•œ ์Šค๋ ˆ๋“œ๋ฅผ ์ฐจ๋‹จํ•˜๊ฑฐ๋‚˜ ์ ์ ˆํ•œ ์Šค๋ ˆ๋“œ ์‚ฌ์šฉ์œผ๋กœ ์„ฑ๋Šฅ ํ–ฅ์ƒ

โœ… 6. ์••์ถ•๊ณผ ์ „์†ก ์ตœ์ ํ™”

  • gzip ์••์ถ•: HTTP ์‘๋‹ต์„ ์••์ถ•ํ•˜์—ฌ ์ „์†ก ์†๋„๋ฅผ ํ–ฅ์ƒ์‹œํ‚ค๋ฉฐ, ์‹ค์ œ๋กœ JSON ๋ฐ์ดํ„ฐ์˜ ํฌ๊ธฐ๋ฅผ 60~80% ์ค„์—ฌ์„œ ๋ณด๋‚ด์คŒ

โœ… 7. ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ ๋ฐ ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ

  • NGINX ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ ์„ค์ •: ์š”์ฒญ์ด ์˜ค๋ฉด ํ”„๋ก์‹œ ์„œ๋ฒ„ ์„ค์ •์„ ํ†ตํ•ด ๋ถ€ํ•˜ ๋ถ„์‚ฐ, ๋ฐฑ์—”๋“œ ๋ถ€ํ•˜ ๊ฐ์†Œ(๋‹จ, ๋ฐฑ์—”๋“œ ์„œ๋ฒ„ 2๊ฐœ ์ด์ƒ)
  • ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ: ์—ฌ๋Ÿฌ ์„œ๋ฒ„์— ๋ถ€ํ•˜๋ฅผ ๊ณ ๋ฅด๊ฒŒ ๋ถ„์‚ฐํ•˜์—ฌ ์„œ๋น„์Šค๊ฐ€ ๋‹ค์šด๋˜์ง€ ์•Š๋„๋ก ํ•จ.

โœ… 8. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ชจ๋‹ˆํ„ฐ๋ง๊ณผ ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ

  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ฑ๋Šฅ ๋ชจ๋‹ˆํ„ฐ๋ง: ๋Œ€ํ‘œ์ ์ธ Prometheus, Grafana ํ™œ์šฉ ์„ฑ๋Šฅ ๋ชจ๋‹ˆํ„ฐ๋ง์„ ํ†ตํ•œ ๋ณ‘๋ชฉ ์ง€์  ์ฐพ์•„ ์ตœ์ ํ™” ์ง„ํ–‰
  • ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ: JMeter, Gatling ๋“ฑ์„ ์‚ฌ์šฉํ•ด ๋ฐฑ์—”๋“œ ์„œ๋ฒ„์— ๋ถ€ํ•˜๋ฅผ ๊ฑธ์–ด ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ ๋ฐ ๊ฐœ์„ ์  ๋„์ถœ

'๐Ÿ› ๏ธBackend' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Backend] ์„ฑ๋Šฅ ์ตœ์ ํ™”๋ž€?  (0) 2025.04.27
'๐Ÿ› ๏ธBackend' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [Backend] ์„ฑ๋Šฅ ์ตœ์ ํ™”๋ž€?
junbin2
junbin2
java.lang.NullPointerException
  • junbin2
    bin's Development Diary
    junbin2
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ์ „์ฒด๋ณด๊ธฐ (137)
      • ๐ŸŽ“๋ฐฉ์†กํ†ต์‹ ๋Œ€ํ•™๊ต (22)
        • ๐Ÿ–ฅ๏ธ์ปดํ“จํ„ฐ๊ณผํ•™๊ณผ (1)
        • ๐ŸŒ์œ ๋น„์ฟผํ„ฐ์Šค ์ปดํ“จํŒ… (7)
        • โš™๏ธ์ปดํ“จํ„ฐ์˜ ์ดํ•ด (11)
        • ๐Ÿ›๏ธ์„ธ๊ณ„์˜์ •์น˜์™€๊ฒฝ์ œ (3)
      • ๐Ÿ“šComputer Science (0)
      • ๐Ÿ› ๏ธBackend (2)
      • โ˜•Java (10)
        • ๐Ÿ“Java Programming (9)
        • ๐ŸงฉJava Design Pattern (1)
      • ๐ŸŒณSpring (9)
        • ๐ŸŒฑSpring Framework (6)
        • ๐ŸŒฑSpring Security (1)
      • โšกPython (13)
      • ๐Ÿ›ข๏ธDatabase (0)
      • ๐ŸŒฟGitHub (1)
      • ๐ŸŒ Network (7)
        • ๐Ÿ“œHTTP (7)
      • ๐Ÿš€DevOps (1)
      • Algorithm Problem Solving (2)
      • Data Structure (1)
      • JavaScript (1)
      • โ›บ์ŠคํŒŒ๋ฅดํƒ€์ฝ”๋”ฉํด๋Ÿฝ (65)
      • ์žก๋‹ด (1)
      • ์ •๋ฆฌ๊ฐ€ ํ•„์š”ํ•œ ๊ธ€ (2)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
  • ๋งํฌ

    • GitHub
  • ๊ณต์ง€์‚ฌํ•ญ

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    spring
    ์ปดํ“จํ„ฐ์˜ ์ดํ•ด
    ๋ฉ”๋ชจ๋ฆฌ
    Java
    ์œ ๋น„์ฟผํ„ฐ์Šค
    ์Šคํ”„๋ง
    ์„ธ๊ณ„ํ™”
    ๋ฐฉํ†ต๋Œ€
    ์ž๋ฐ”
    Spring Framework
    ์œ ๋น„์ฟผํ„ฐ์Šค ์ปดํ“จํŒ…
    Python
    ํด๋ผ์šฐ๋“œ
    ์ปดํŒŒ์ผ๋Ÿฌ
    ๋ฐฉ์†กํ†ต์‹ ๋Œ€ํ•™๊ต
    ์œ ๋น„์ฟผํ„ฐ์Šค ์ปดํ“จํŒ…๊ฐœ๋ก 
    ํ•จ์ˆ˜
    ํด๋ž˜์Šค
    ํŒŒ์ด์ฌ
    ๋ฐฉ์†ก๋Œ€
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.1
junbin2
[Backend] ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ฑ๋Šฅ ์ตœ์ ํ™” ์ข…๋ฅ˜
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”