๐Ÿ—๏ธ ์•„ํ‚คํ…์ฒ˜ ๊ฒฐ์ •์„ ์ž˜ํ•˜๋Š” ์‹œ๋‹ˆ์–ด์˜ 6๊ฐ€์ง€ ์‹ค์ „ ํ”„๋ ˆ์ž„์›Œํฌ

sangjinsuยท2025๋…„ 6์›” 6์ผ

How I Make Better Architectural Decisions as a Senior Developer

์†Œํ”„ํŠธ์›จ์–ด ์‹œ์Šคํ…œ์˜ ์„ฑํŒจ๋Š” ์•„ํ‚คํ…์ฒ˜ ๊ฒฐ์ •์— ๋‹ฌ๋ ค ์žˆ๋‹ค๊ณ  ํ•ด๋„ ๊ณผ์–ธ์ด ์•„๋‹™๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ์„ ํ•˜๋‹ค ๋ณด๋ฉด ๊ธฐ์ˆ ์ ์ธ ์—ญ๋Ÿ‰๋งŒ์œผ๋กœ๋Š” ๋ถ€์กฑํ•˜๋‹ค๋Š” ๊ฑธ ๋А๋ผ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์˜ฌ๋ฐ”๋ฅธ ๊ฒฐ์ •์„ ๋‚ด๋ฆฌ๋ ค๋ฉด ํŠธ๋ ˆ์ด๋“œ์˜คํ”„๋ฅผ ์ €์šธ์งˆํ•˜๊ณ , ์žฅ๊ธฐ์ ์ธ ์˜ํ–ฅ์„ ๊ณ ๋ คํ•˜๋ฉฐ, ๋‹ค์–‘ํ•œ ์ดํ•ด๊ด€๊ณ„์ž๋“ค๊ณผ ์†Œํ†ตํ•˜๋Š” ๋Šฅ๋ ฅ์ด ํ•„์š”ํ•˜์ฃ .

์ด ๊ธ€์—์„œ๋Š” ์ œ๊ฐ€ ์–ด๋–ป๊ฒŒ ์†Œํ”„ํŠธ์›จ์–ด ์•„ํ‚คํ…์ฒ˜๋ฅผ ์„ค๊ณ„ํ•˜๊ณ , ์–ด๋ ค์šด ๊ฒฐ์ •์„ ๋‚ด๋ฆฌ๋Š”์ง€ ๊ณต์œ ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

์Šคํฌ์ผ๋Ÿฌ > ์™„๋ฒฝํ•œ ์ •๋‹ต์€ ๊ฑฐ์˜ ์—†์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ ์ƒํ™ฉ์—์„œ ์ตœ์„ ์˜ ์„ ํƒ์„ ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.


๐Ÿงฑ ์•„ํ‚คํ…์ฒ˜๋Š” โ€˜๋ช…ํ™•ํ•œ ๋ฌธ์ œ ์ •์˜โ€™์—์„œ ์‹œ์ž‘ํ•œ๋‹ค

ํ™”์ดํŠธ๋ณด๋“œ๋ฅผ ๊บผ๋‚ด๊ธฐ ์ „์—, ์ €๋Š” ํ•ญ์ƒ ๋ฌธ์ œ๋ฅผ ์ •๋ง ๋ช…ํ™•ํ•˜๊ฒŒ ์ดํ•ดํ•˜๋ ค๊ณ  ๋…ธ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

๋ฌธ์ œ๋ฅผ ์ž˜ ์ •์˜ํ•˜๋Š” ๊ฒƒ๋งŒ์œผ๋กœ๋„ ์ข‹์€ ์„ค๊ณ„๋ฅผ ์ ˆ๋ฐ˜์€ ํ•œ ์…ˆ์ด์ฃ .

๋‹ค์Œ์€ ์ œ๊ฐ€ ์ฃผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค:

1. โ€œ์™œ?โ€๋ฅผ ๋ฐ˜๋ณตํ•ด์„œ ๋ฌป๋Š”๋‹ค

โ€œ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋กœ ๊ฐ€์•ผ ํ•ด์š”.โ€๋ผ๋Š” ๋ง์ด ๋“ค๋ฆฌ๋ฉด, ๊ทธ๋ƒฅ ๋™์˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ทธ ๊ฒฐ์ •์˜ ๋ฐฐ๊ฒฝ์„ ์ดํ•ดํ•  ๋•Œ๊นŒ์ง€ ๊ณ„์† โ€œ์™œ?โ€๋ผ๊ณ  ๋ฌป์Šต๋‹ˆ๋‹ค.

์Šค์ผ€์ผ ๋ฌธ์ œ์ธ์ง€, ํŒ€ ๊ตฌ์„ฑ ๋•Œ๋ฌธ์ธ์ง€, ์•„๋‹ˆ๋ฉด ๋น ๋ฅธ ๋ฐฐํฌ ๋•Œ๋ฌธ์ธ์ง€ ๋ถ„๋ช…ํžˆ ํ•ด์•ผ ํ•˜์ฃ .

2. ์ œ์•ฝ ์กฐ๊ฑด์„ ์ •์˜ํ•œ๋‹ค

์„ฑ๋Šฅ, ํ™•์žฅ์„ฑ, ํŒ€ ์—ญ๋Ÿ‰, ์˜ˆ์‚ฐ ๋“ฑ ๋‹ค์–‘ํ•œ ํ˜„์‹ค์  ์ œ์•ฝ์ด ์•„ํ‚คํ…์ฒ˜์— ์˜ํ–ฅ์„ ์ค๋‹ˆ๋‹ค.

3. ์ดํ•ด๊ด€๊ณ„์ž๋“ค๊ณผ ๋Œ€ํ™”ํ•œ๋‹ค

์ œํ’ˆํŒ€, ๋น„์ฆˆ๋‹ˆ์ŠคํŒ€, ์šด์˜ํŒ€ ๋“ฑ ๋‹ค์–‘ํ•œ ํŒ€๊ณผ ์ด์•ผ๊ธฐํ•˜๋‹ค ๋ณด๋ฉด

์ˆจ๊ฒจ์ง„ ์š”๊ตฌ์‚ฌํ•ญ(์˜ˆ: ๊ทœ์ œ ์ค€์ˆ˜, ๋น„์šฉ ์ด์Šˆ, ๊ณ ์ถฉ์‚ฌํ•ญ ๋“ฑ)์„ ์•Œ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

4. ํ•ต์‹ฌ ์œ ์Šค์ผ€์ด์Šค๋ฅผ ๋ช…ํ™•ํžˆ ํ•œ๋‹ค

์—ฃ์ง€ ์ผ€์ด์Šค์— ์ง‘์ฐฉํ•˜๊ธฐ๋ณด๋‹จ, ํ•ต์‹ฌ ๊ธฐ๋Šฅ์ด ์–ผ๋งˆ๋‚˜ ์ž˜ ์ž‘๋™ํ•˜๋Š”์ง€์— ์ง‘์ค‘ํ•ฉ๋‹ˆ๋‹ค.

5. ํ•œ ํŽ˜์ด์ง€ ์š”์•ฝ์„ ์ž‘์„ฑํ•œ๋‹ค

๋ป”ํ•œ ๋ง ๊ฐ™์ง€๋งŒ ์ •๋ง ํšจ๊ณผ์ ์ž…๋‹ˆ๋‹ค.

๋ฌธ์ œ์™€ ์ œ์•ฝ ์กฐ๊ฑด์„ A4 ํ•œ ์žฅ ๋ถ„๋Ÿ‰์œผ๋กœ ๋ช…ํ™•ํžˆ ์„ค๋ช…ํ•˜์ง€ ๋ชปํ•˜๋ฉด, ์•„์ง ์ดํ•ด๊ฐ€ ๋ถ€์กฑํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ข…์ด์— ํ๋ฆฟํ•˜๊ฒŒ ๋ณด์ด๋ฉด, ์‹ค์ œ ์„œ๋น„์Šค์—์„  ๋” ์—‰๋ง์ด ๋  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค.


์ด์ œ ์‹ค์ œ ์ƒํ™ฉ์—์„œ ์–ด๋–ค ์„ ํƒ์„ ์–ด๋–ป๊ฒŒ ํ–ˆ๋Š”์ง€ 6๊ฐ€์ง€ ์‚ฌ๋ก€๋ฅผ ํ†ตํ•ด ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

1. ๋‹จ์ˆœํ•จ vs ์œ ์—ฐ์„ฑ: REST vs ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜

์‹œ๋‚˜๋ฆฌ์˜ค: ์˜จ๋ผ์ธ ์‡ผํ•‘๋ชฐ์—์„œ ๊ฒฐ์ œ ํ›„ ๋‘ ๊ฐ€์ง€ ์ž‘์—…์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค: ์ฃผ๋ฌธ ์ฒ˜๋ฆฌ์™€ ์žฌ๊ณ  ์ฐจ๊ฐ.

ํ”Œ๋ž˜์‹œ ์„ธ์ผ ๊ฐ™์€ ํŠธ๋ž˜ํ”ฝ ํญ์ฃผ ์ƒํ™ฉ๋„ ๊ณ ๋ คํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์„ ํƒ์ง€

  • A) REST API๋ฅผ ํ†ตํ•œ ๋™๊ธฐ ๋ฐฉ์‹: ๊ฐ„๋‹จํ•˜์ง€๋งŒ ์„œ๋น„์Šค ๊ฐ„ ๊ฐ•๊ฒฐํ•ฉ
  • B) Kafka ๋“ฑ ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜ ๋น„๋™๊ธฐ ๋ฐฉ์‹: ๋А์Šจํ•œ ๊ฒฐํ•ฉ, ํ™•์žฅ์„ฑ ๋†’์Œ, ํ•˜์ง€๋งŒ ๋ณต์žก๋„ ์ฆ๊ฐ€

๋‚˜์˜ ์„ ํƒ๊ณผ ์ด์œ 

์ž‘์€ ์‹œ์Šคํ…œ์ด๋ผ๋ฉด REST๊ฐ€ ์ง๊ด€์ ์ด๊ณ  ์ข‹์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์ด์ฒ˜๋Ÿผ ๋™์‹œ์— ์ฒ˜๋ฆฌํ•ด์•ผ ํ•  ์ž‘์—…์ด ๋งŽ๊ณ , ํŠธ๋ž˜ํ”ฝ ๋ถ€ํ•˜๊ฐ€ ํฐ ์ƒํ™ฉ์ด๋ผ๋ฉด ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜์ด ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.

์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜์˜ ์žฅ์ :

  • ๋А์Šจํ•œ ๊ฒฐํ•ฉ: Payment ์„œ๋น„์Šค๋Š” ์†Œ๋น„์ž๊ฐ€ ๋ˆ„๊ตฐ์ง€ ๋ชฐ๋ผ๋„ ๋จ
  • ๋…๋ฆฝ ํ™•์žฅ์„ฑ: ์ฃผ๋ฌธ ์„œ๋น„์Šค๋งŒ ํ„ฐ์ง€๋ฉด ๊ทธ๊ฒƒ๋งŒ ์Šค์ผ€์ผ ์•„์›ƒ
  • ์žฅ์•  ๊ฒฉ๋ฆฌ: ํ•œ ์„œ๋น„์Šค๊ฐ€ ์ฃฝ์–ด๋„ ๋‹ค๋ฅธ ์„œ๋น„์Šค๋Š” ๋™์ž‘
  • ํ™•์žฅ ์šฉ์ด: ์ด๋ฒคํŠธ์— ์ƒˆ ์„œ๋น„์Šค๋งŒ ๊ตฌ๋…์‹œํ‚ค๋ฉด ๋จ (์˜ˆ: ์ด๋ฉ”์ผ ๋ฐœ์†ก, ๋ถ„์„ ๋“ฑ)

๋ฌผ๋ก  Kafka ๋ชจ๋‹ˆํ„ฐ๋ง, ๋ฉ”์‹œ์ง€ ์ค‘๋ณต, ์žฌ์‹œ๋„ ๊ฐ™์€ ๋ถ€๊ฐ€ ์ž‘์—…์€ ํ•„์š”ํ•˜์ง€๋งŒ,

ํ™•์žฅ์„ฑ๊ณผ ๋ณต์›๋ ฅ์„ ์œ„ํ•ด์„  ๊ทธ๋งŒํ•œ ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.


2. ์ง์ ‘ ๊ตฌ์ถ•ํ• ๊นŒ? ์‚ฌ์˜ฌ๊นŒ? (Build vs Buy)

์‹œ๋‚˜๋ฆฌ์˜ค: ๊ธฐ์—…์šฉ ๋ชจ๋ฐ”์ผ ์•ฑ์„ ์œ„ํ•œ ๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ. MFA, ์ƒ์ฒด ์ธ์ฆ, SSO ๋“ฑ ๊ณ ๊ธ‰ ๊ธฐ๋Šฅ ์š”๊ตฌ + GDPR ๋“ฑ ์ปดํ”Œ๋ผ์ด์–ธ์Šค ์ค€์ˆ˜ ํ•„์š”.

์„ ํƒ์ง€

  • A) ์ง์ ‘ ์ธ์ฆ ์‹œ์Šคํ…œ ๊ตฌ์ถ•
  • B) Auth0, AWS Cognito ๊ฐ™์€ ์™ธ๋ถ€ ์ธ์ฆ ์„œ๋น„์Šค ์‚ฌ์šฉ

๋‚˜์˜ ์„ ํƒ๊ณผ ์ด์œ 

๋ณด์•ˆ์€ ์ œ๋Œ€๋กœ ๋งŒ๋“ค๊ธฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๊ทœ์ œ๊นŒ์ง€ ์–ฝํžˆ๋ฉด ์ธ์ฆ์€ ์ ˆ๋Œ€ ๊ฐ€๋ณ๊ฒŒ ๋ณด๋ฉด ์•ˆ ๋ฉ๋‹ˆ๋‹ค.

์ „ ์ด๋Ÿด ๋• ์™ธ๋ถ€ ์†”๋ฃจ์…˜์„ ๋„์ž…ํ•ฉ๋‹ˆ๋‹ค.

  • ๊ฒ€์ฆ๋œ ๋ณด์•ˆ
  • ์ž๋™ ์ปดํ”Œ๋ผ์ด์–ธ์Šค ๋Œ€์‘
  • ์ง€์†์ ์ธ ์—…๋ฐ์ดํŠธ
  • ํ•ต์‹ฌ ์ œํ’ˆ์— ์ง‘์ค‘ ๊ฐ€๋Šฅ

์ง์ ‘ ๋งŒ๋“ค๋ฉด ์ปค์Šคํ„ฐ๋งˆ์ด์ง•์€ ๊ฐ€๋Šฅํ•˜๊ฒ ์ง€๋งŒ, ํŒ€์˜ ๋ฆฌ์†Œ์Šค๋ฅผ ๋„ˆ๋ฌด ๋งŽ์ด ์†Œ๋ชจํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฑด โ€˜ํœ ์„ ๋‹ค์‹œ ๋งŒ๋“ค ํ•„์š”๋Š” ์—†๋‹คโ€™๋Š” ๊ณ ์ „์ ์ธ ์‚ฌ๋ก€์ž…๋‹ˆ๋‹ค.


3. ๋ชจ๋†€๋ฆฌ์Šค vs ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค

์‹œ๋‚˜๋ฆฌ์˜ค: SaaS ์Šคํƒ€ํŠธ์—…, ์ œํ’ˆ-์‹œ์žฅ ์ ํ•ฉ์„ฑ(PMF)์„ ์ฐพ๋Š” ๋‹จ๊ณ„, ๋น ๋ฅธ ๊ฐœ๋ฐœ์ด ์ค‘์š”ํ•˜์ง€๋งŒ ํ™•์žฅ์„ฑ๋„ ๊ณ ๋ คํ•ด์•ผ ํ•จ.

์„ ํƒ์ง€

  • A) ๋ชจ๋“ˆํ˜• ๋ชจ๋†€๋ฆฌ์Šค๋กœ ์‹œ์ž‘, ์ดํ›„ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋กœ ์ „ํ™˜ ๊ฐ€๋Šฅํ•˜๊ฒŒ ์„ค๊ณ„
  • B) ์ฒ˜์Œ๋ถ€ํ„ฐ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋กœ ๋ถ„๋ฆฌํ•˜์—ฌ ๋…๋ฆฝ ๋ฐฐํฌ, ํ™•์žฅ ๊ฐ€๋Šฅ

๋‚˜์˜ ์„ ํƒ๊ณผ ์ด์œ 

์ดˆ๊ธฐ์—๋Š” ์†๋„๊ฐ€ ์ƒ๋ช…์ž…๋‹ˆ๋‹ค.

๋ชจ๋†€๋ฆฌ์Šค๋Š” ๋น ๋ฅด๊ฒŒ ๊ฐœ๋ฐœํ•˜๊ณ  ๋””๋ฒ„๊น…ํ•˜๊ธฐ ์ข‹์Šต๋‹ˆ๋‹ค.

PMF๋„ ์•ˆ ๋‚˜์™”๋Š”๋ฐ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋ถ€ํ„ฐ ๋„์ž…ํ•˜๋ฉด:

  • ๋ถ„์‚ฐ ํŠธ๋žœ์žญ์…˜
  • ์„œ๋น„์Šค ๊ฐ„ ํ†ต์‹ 
  • ๋ฐฐํฌ ๋ณต์žก๋„ ์ฆ๊ฐ€

์ด๋Ÿฐ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ์ฃ . ํŽ˜์ด์Šค๋ถ, ์ธ์Šคํƒ€๊ทธ๋žจ, ์•„๋งˆ์กด๋„ ์ฒ˜์Œ์—” ๋ชจ๋†€๋ฆฌ์Šค์˜€์Šต๋‹ˆ๋‹ค.

๐Ÿ” PMF๋ž€?

  • Product-Market Fit(์ œํ’ˆ-์‹œ์žฅ ์ ํ•ฉ์„ฑ) ์˜ ์•ฝ์ž์ž…๋‹ˆ๋‹ค.
  • โ€œ๋‚ด๊ฐ€ ๋งŒ๋“  ์ œํ’ˆ์ด, ํŠน์ • ์‹œ์žฅ์˜ ์‹ค์ œ ๊ณ ๊ฐ๋“ค์—๊ฒŒ ๋ช…ํ™•ํ•œ ๊ฐ€์น˜๋ฅผ ์ œ๊ณตํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, ๊ทธ ๊ณ ๊ฐ๋“ค์ด ๊ธฐ๊บผ์ด ๋ˆ์„ ๋‚ด๊ณ  ์‚ฌ์šฉํ•˜๋ ค๋Š” ์ƒํƒœโ€

4. SQL vs NoSQL

์‹œ๋‚˜๋ฆฌ์˜ค: ์‚ฌ์šฉ์ž ์ •์˜ ํ•„๋“œ๋ฅผ ์ง€์›ํ•˜๋Š” CRM ์‹œ์Šคํ…œ.

์ผ๋ถ€ ๊ณ ๊ฐ์€ ๊ณ ์ •๋œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ, ์ผ๋ถ€๋Š” ์œ ์—ฐํ•œ ๊ตฌ์กฐ๋ฅผ ์›ํ•จ.

์„ ํƒ์ง€

  • A) PostgreSQL/MySQL + JSON ์ปฌ๋Ÿผ
  • B) MongoDB/DynamoDB ๊ฐ™์€ NoSQL

๋‚˜์˜ ์„ ํƒ๊ณผ ์ด์œ 

๊ธฐ๋ณธ์ ์œผ๋กœ ์ €๋Š” SQL์„ ์„ ํ˜ธํ•ฉ๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ๋‹ค์–‘ํ•œ ๊ตฌ์กฐ์˜ ํ•„๋“œ๊ฐ€ ์ž์ฃผ ๋ฐ”๋€Œ๊ณ , ํ™•์žฅ์„ฑ์ด ์ค‘์š”ํ•˜๋‹ค๋ฉด NoSQL์ด ๋‚ซ์Šต๋‹ˆ๋‹ค.

๋ณต์žกํ•œ ์ฟผ๋ฆฌ๋‚˜ ๋ฆฌํฌํŒ…์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ, SQL + NoSQL ํ˜ผ์šฉ๋„ ๊ณ ๋ คํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


5. ์บ์‹ฑํ• ๊นŒ ๋ง๊นŒ (To Cache or Not to Cache)

์‹œ๋‚˜๋ฆฌ์˜ค: ์ถ”์ฒœ ์‹œ์Šคํ…œ์˜ ๋ถ€ํ•˜๊ฐ€ ๋†’์•„ ์„ฑ๋Šฅ ๋ฌธ์ œ ๋ฐœ์ƒ.

์ง€์—ฐ ์‹œ๊ฐ„์ด ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ฐ”๋กœ ์ฒด๊ฐ๋จ. ๋น ๋ฅด๊ฒŒ ํ•ด๊ฒฐ์ด ํ•„์š”ํ•จ.

์„ ํƒ์ง€

  • A) Redis๋ฅผ ํ™œ์šฉํ•œ ์บ์‹ฑ
  • B) ์ถ”์ฒœ ๊ฒฐ๊ณผ๋ฅผ ๋ฏธ๋ฆฌ ๊ณ„์‚ฐํ•ด์„œ ์ €์žฅ (precompute)

๋‚˜์˜ ์„ ํƒ๊ณผ ์ด์œ 

Redis ์บ์‹ฑ์ด ๋‹จ๊ธฐ์ ์œผ๋กœ๋Š” ๊ฐ€์žฅ ๋น ๋ฅธ ํ•ด๊ฒฐ์ฑ…์ž…๋‹ˆ๋‹ค.

  • 2์ดˆ ๊ฑธ๋ฆฌ๋˜ ์ฟผ๋ฆฌ๋ฅผ 100ms ๋ฏธ๋งŒ์œผ๋กœ
  • ๊ตฌ์กฐ ๋ณ€๊ฒฝ ์—†์ด ์ ์šฉ ๊ฐ€๋Šฅ
  • ์ถ”ํ›„ precompute ๋ฐฉ์‹์œผ๋กœ ํ™•์žฅ ๊ฐ€๋Šฅ

Redis์˜ ๋‹จ์ ์€ ๋ฐ์ดํ„ฐ ๋™๊ธฐํ™”๋‚˜ ์บ์‹œ ๋ฌดํšจํ™” ๋“ฑ์˜ ์ฒ˜๋ฆฌ ํ•„์š”์„ฑ์ž…๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์ง€๊ธˆ์ฒ˜๋Ÿผ ๊ธ‰ํ•œ ์ƒํ™ฉ์—์„œ๋Š” ๋น ๋ฅธ ์บ์‹œ ์ ์šฉ์ด ํšจ๊ณผ์ ์ž…๋‹ˆ๋‹ค.

๊ธฐ์ค€์€ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค.

๋น ๋ฅธ ๊ฐœ์„ ์ด ํ•„์š”ํ•  ๋• ์บ์‹œ, ์˜ˆ์ธก ๊ฐ€๋Šฅํ•œ ๋ถ€ํ•˜๋ผ๋ฉด precompute.


6. ๋ ˆ๊ฑฐ์‹œ ์‹œ์Šคํ…œ ๋‹ค๋ฃจ๊ธฐ (Taming the Legacy Beast)

์‹œ๋‚˜๋ฆฌ์˜ค: 20๋…„ ๋œ ํ•ต์‹ฌ ๋ชจ๋†€๋ฆฌ์Šค ์‹œ์Šคํ…œ.

๋ณ€๊ฒฝ์ด ์–ด๋ ต๊ณ  ๋ฒ„๊ทธ๊ฐ€ ์ž์ฃผ ๋ฐœ์ƒํ•จ. ๊ฐœ๋ฐœ์ž๋“ค์€ ์†๋Œ€๊ธฐ๋ฅผ ๊บผ๋ คํ•จ.

์„ ํƒ์ง€

  • A) ์ƒˆ๋กœ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋‹ค์‹œ ๊ตฌ์ถ•
  • B) ์ ์ง„์ ์œผ๋กœ ๋ฆฌํŒฉํ† ๋ง ๋ฐ ํ˜„๋Œ€ํ™”

๋‚˜์˜ ์„ ํƒ๊ณผ ์ด์œ 

๋‹ค์‹œ ๋งŒ๋“œ๋Š” ๊ฑด ๋งค๋ ฅ์ ์ด์ง€๋งŒ ์‹ค์ œ๋กœ๋Š” ์‹คํŒจ ํ™•๋ฅ ์ด ๋†’์Šต๋‹ˆ๋‹ค.

  • ์ƒˆ ๋ฒ„๊ทธ ๋ฐœ์ƒ
  • ๊ณผํ•œ ์ผ์ • ์ง€์—ฐ
  • ๊ธฐ์กด ๊ธฐ๋Šฅ ๋ˆ„๋ฝ ์œ„ํ—˜

๊ทธ๋ž˜์„œ ์ €๋Š” ์ ์ง„์  ๋ฆฌํŒฉํ† ๋ง์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

  • ๋ถˆ์•ˆ์ •ํ•˜๊ฑฐ๋‚˜ ์ž์ฃผ ๊ณ ์žฅ ๋‚˜๋Š” ๋ชจ๋“ˆ์„ ์šฐ์„  ๊ฐœ์„ 
  • ๋ž˜ํผ/์ธํ„ฐํŽ˜์ด์Šค๋กœ ๊ฒฝ๊ณ„๋ฅผ ๋งŒ๋“ค๊ณ  ์•ˆ์ „ํ•˜๊ฒŒ ๊ต์ฒด
  • ํ…Œ์ŠคํŠธ์™€ CI/CD ๊ฐ•ํ™”๋กœ ์•ˆ์ •์„ฑ ํ™•๋ณด
  • ๋ณ€๊ฒฝ ๊ฐ€๋Šฅํ•œ ๋ถ€๋ถ„๋ถ€ํ„ฐ ๊ตฌ์กฐ ๊ฐœ์„ 

์ด ๋ฐฉ์‹์ด ๋œ ํ™”๋ คํ•ด ๋ณด์—ฌ๋„ ํ˜„์‹ค์ ์œผ๋กœ ๊ฐ€์žฅ ์•ˆ์ „ํ•˜๊ณ  ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


โœ… ์•„ํ‚คํ…์ฒ˜ ๊ฒฐ์ •์—์„œ ๋ฐฐ์šด ๊ตํ›ˆ

์•„ํ‚คํ…์ฒ˜ ๊ฒฐ์ •์€ ์žฅ๊ธฐ์ ์ธ ์˜ํ–ฅ์„ ๋ผ์นฉ๋‹ˆ๋‹ค.

์ข‹์€ ์„ ํƒ์„ ํ•˜๋ ค๋ฉด ๊ฒฝํ—˜์ด ํ•„์š”ํ•˜์ง€๋งŒ, ํ•™์Šต ์†๋„๋ฅผ ๋†’์ผ ๋ฐฉ๋ฒ•๋„ ์žˆ์Šต๋‹ˆ๋‹ค:

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

๐Ÿ“˜ ADR๋ž€?

Architecture Decision Record๋Š” โ€œํŠน์ • ์‹œ์ ์— ์™œ ๊ทธ ๊ธฐ์ˆ ์  ๊ฒฐ์ •์„ ๋‚ด๋ ธ๋Š”์ง€ ๊ธฐ๋ก์œผ๋กœ ๋‚จ๊ธฐ๋Š” ๋ฌธ์„œโ€์ž…๋‹ˆ๋‹ค. ์†Œํ”„ํŠธ์›จ์–ด ์„ค๊ณ„ ๊ณผ์ •์—์„œ โ€œ์™œ ์ด๊ฑธ ์„ ํƒํ–ˆ๋Š”๊ฐ€?โ€œ์— ๋Œ€ํ•œ ๋งฅ๋ฝ๊ณผ ํŠธ๋ ˆ์ด๋“œ์˜คํ”„๋ฅผ ๋ช…ํ™•ํžˆ ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.


์ข‹์€ ์•„ํ‚คํ…์ฒ˜๋Š” ์ฒ˜์Œ๋ถ€ํ„ฐ ์™„๋ฒฝํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

์ง€์†์ ์œผ๋กœ ๋ฐฐ์šฐ๊ณ , ๊ฐœ์„ ํ•˜๊ณ , ์œ ์—ฐํ•˜๊ฒŒ ๋ณ€ํ™”์— ๋Œ€์‘ํ•˜๋Š” ๊ฒƒ์ด ํ•ต์‹ฌ์ž…๋‹ˆ๋‹ค.

๐Ÿ“‹ ๋ธ”๋กœ๊ทธ ๋‚ด์šฉ ์š”์•ฝ ํ‘œ (์‹œ๋‹ˆ์–ด ๊ฐœ๋ฐœ์ž์˜ ์•„ํ‚คํ…์ฒ˜ ๊ฒฐ์ • 6๊ฐ€์ง€ ์‚ฌ๋ก€)

๋ฒˆํ˜ธ์ฃผ์ œ์ƒํ™ฉ ์š”์•ฝ์„ ํƒ์ง€ A์„ ํƒ์ง€ B์ตœ์ข… ๊ฒฐ์ • & ์ด์œ  ์š”์•ฝ
1๋‹จ์ˆœํ•จ vs ์œ ์—ฐ์„ฑ๊ฒฐ์ œ ํ›„ ์ฃผ๋ฌธ ์ฒ˜๋ฆฌ + ์žฌ๊ณ  ์ฐจ๊ฐ ํ•„์š”, ํŠธ๋ž˜ํ”ฝ ๊ธ‰์ฆ ๋Œ€๋น„REST API: ๋‹จ์ˆœํ•˜๊ณ  ์ง๊ด€์ ์ด์ง€๋งŒ ๊ฐ•๊ฒฐํ•ฉ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜(Kafka): ๋А์Šจํ•œ ๊ฒฐํ•ฉ, ํ™•์žฅ์„ฑ โ†‘, ๋ณต์žก๋„ โ†‘์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜ ์„ ํƒ: ํ™•์žฅ์„ฑ๊ณผ ์žฅ์•  ๊ฒฉ๋ฆฌ์— ์œ ๋ฆฌ
2Build vs Buy๋ณด์•ˆ์ด ์ค‘์š”ํ•œ ๋ชจ๋ฐ”์ผ ์•ฑ(MFA, SSO, GDPR ๋“ฑ)์ง์ ‘ ์ธ์ฆ ์‹œ์Šคํ…œ ๊ตฌ์ถ•: ์™„์ „ํ•œ ์ œ์–ด ๊ฐ€๋ŠฅAuth0/Cognito ๋“ฑ ์™ธ๋ถ€ ์†”๋ฃจ์…˜: ๋น ๋ฅธ ์ถœ์‹œ, ๊ทœ์ œ ๋Œ€์‘, ๋ณด์•ˆ ๊ฒ€์ฆ ์™„๋ฃŒBuy(์™ธ๋ถ€ ์†”๋ฃจ์…˜): ๋ฆฌ์Šคํฌ ๋‚ฎ์ถ”๊ณ  ๋ณธ์งˆ์— ์ง‘์ค‘
3๋ชจ๋†€๋ฆฌ์Šค vs ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์Šคํƒ€ํŠธ์—… ์ดˆ๊ธฐ ๋‹จ๊ณ„, ๋น ๋ฅธ ๊ฐœ๋ฐœ์ด ์ค‘์š”, PMF ์ „๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค: ๋…๋ฆฝ ๋ฐฐํฌ, ํ™•์žฅ์„ฑ ์žˆ์œผ๋‚˜ ์ดˆ๊ธฐ ๋ณต์žก๋„ โ†‘๋ชจ๋“ˆํ˜• ๋ชจ๋†€๋ฆฌ์Šค: ๋น ๋ฅธ ๊ฐœ๋ฐœ, ์ „ํ™˜ ์šฉ์ด๋ชจ๋†€๋ฆฌ์Šค ์„ ํƒ: ์ดˆ๊ธฐ์—” ์†๋„๊ฐ€ ์ค‘์š”
4SQL vs NoSQL์œ ์—ฐํ•œ ์ปค์Šคํ…€ ํ•„๋“œ๋ฅผ ๊ฐ€์ง„ CRM, ์ผ๋ถ€ ๊ณ ๊ฐ์€ ์ •ํ˜•, ์ผ๋ถ€๋Š” ๋น„์ •ํ˜• ๋ฐ์ดํ„ฐ ์„ ํ˜ธSQL(JSON ์ปฌ๋Ÿผ): ์ •ํ˜• ์ฟผ๋ฆฌ, ์•ˆ์ •์„ฑ โ†‘NoSQL: ์œ ์—ฐํ•œ ์Šคํ‚ค๋งˆ, ์Šค์ผ€์ผ ์‰ฌ์›€ํ˜ผ์šฉ or NoSQL: ์œ ์—ฐ์„ฑ๊ณผ ํ™•์žฅ์„ฑ ๊ณ ๋ ค
5Cache or Precompute์ถ”์ฒœ ์‹œ์Šคํ…œ์ด ๋ถ€ํ•˜๋ฅผ ์ผ์œผํ‚ด, ๋น ๋ฅธ ๊ฐœ์„  ํ•„์š”Redis Cache: ์ฆ‰๊ฐ ์„ฑ๋Šฅ ํ–ฅ์ƒ, ์ ์šฉ ์‰ฌ์›€Precompute: ๋” ๋น ๋ฅด์ง€๋งŒ ์ดˆ๊ธฐ ๊ตฌ์ถ• ๋ณต์žก๋„ โ†‘Cache ์šฐ์„ : ๋น ๋ฅธ ํšจ๊ณผ, ์ดํ›„ Precompute๋กœ ๊ฐœ์„ 
6๋ ˆ๊ฑฐ์‹œ ๊ฐœ์„  vs ์ „๋ฉด ์žฌ๊ตฌ์ถ•20๋…„ ๋œ ํ•ต์‹ฌ ์‹œ์Šคํ…œ, ๋ณ€๊ฒฝ ์–ด๋ ค์›€, ๋ฒ„๊ทธ ์žฆ์Œ์žฌ๊ตฌ์ถ•: ๊น”๋”ํ•˜์ง€๋งŒ ์œ„ํ—˜ ๋ถ€๋‹ด ํฌ๊ณ  ์™„๋ฃŒ๊นŒ์ง€ ์˜ค๋ž˜ ๊ฑธ๋ฆผ์ ์ง„์  ๋ฆฌํŒฉํ† ๋ง: ์•ˆ์ •์„ฑ ์œ ์ง€, ๊ฐœ์„  ์ง€์† ๊ฐ€๋Šฅ์ ์ง„์  ๋ฆฌํŒฉํ† ๋ง: ํ˜„์‹ค์ ์ธ ์„ ํƒ, ๋ฆฌ์Šคํฌ โ†“

๐Ÿ“Œ ๊ธฐํƒ€ ์ •๋ฆฌ: ์•„ํ‚คํ…์ฒ˜ ๊ฒฐ์ • ์‹œ ๊ณ ๋ คํ•  ์›์น™

ํ•ญ๋ชฉ์„ค๋ช…
๊ณผ๊ฑฐ ์‚ฌ๋ก€ ๋ถ„์„ADR, ํฌ์ŠคํŠธ๋ชจํ…œ ๋ฌธ์„œ ๋“ฑ์„ ํ†ตํ•ด ํ•™์Šต
ํŠธ๋ Œ๋“œ ๋งน์‹  ๊ธˆ์ง€์œ ํ–‰๋ณด๋‹จ ์ƒํ™ฉ์— ๋งž๋Š” ๊ธฐ์ˆ  ์„ ํƒ
๋ณ€ํ™”์— ๊ฐ•ํ•œ ๊ตฌ์กฐ๋А์Šจํ•œ ๊ฒฐํ•ฉ, ๋ชจ๋“ˆํ™” ์ค‘์‹ฌ ์„ค๊ณ„
ํ”„๋กœํ† ํƒ€์ดํ•‘์‹คํ—˜๊ณผ ์ธก์ •์œผ๋กœ ๊ฒ€์ฆ ํ›„ ์ ์šฉ
๋˜๋Œ๋ฆด ์ˆ˜ ์žˆ๋Š” ๊ฒฐ์ •๋˜๋Œ๋ฆด ์ˆ˜ ์—†๋Š” ๊ฒฐ์ •์€ ์‹ ์ค‘ํ•˜๊ฒŒ
์‹ค์ˆ˜ ์ˆ˜์šฉ๋น ๋ฅด๊ฒŒ ๊ฐœ์„  ๊ฐ€๋Šฅํ•œ ๋ฌธํ™” ์œ ์ง€
๋‹จ๊ธฐ vs ์žฅ๊ธฐ ๊ท ํ˜•์žฅ๊ธฐ์  ํ’ˆ์งˆ์„ ๊ณ ๋ คํ•˜๋˜, ๋•Œ๋ก  ๋น ๋ฅธ ํ•ด๊ฒฐ๋„ ํ•„์š”
๊ฐ์ • ๋ฐฐ์ œ๊ธฐ์ˆ ์  ํฅ๋ฏธ๋ณด๋‹ค ๋ฌธ์ œ ํ•ด๊ฒฐ ์ค‘์‹ฌ์œผ๋กœ ํŒ๋‹จ

โœ… ์ถ”๊ฐ€๋กœ ๋…ผ์˜ํ•  ๋งŒํ•œ ์ฃผ์ œ 3๊ฐ€์ง€

  1. ํ”„๋กœํ† ํƒ€์ดํ•‘ vs ์‚ฌ์ „ ์„ค๊ณ„: ์–ด๋””๊นŒ์ง€ ๊ณ ๋ฏผํ•˜๊ณ  ์‹œ์ž‘ํ•  ๊ฒƒ์ธ๊ฐ€?

    ๐Ÿ‘‰ ์ดˆ๊ธฐ์— ์™„๋ฒฝํ•œ ์„ค๊ณ„๋ฅผ ํ•  ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค.

    ๋น ๋ฅด๊ฒŒ ์ž‘๋™ํ•˜๋Š” ํ”„๋กœํ† ํƒ€์ž…์œผ๋กœ ๊ฒ€์ฆํ•˜๊ณ , ํ”ผ๋“œ๋ฐฑ์„ ๋ฐ˜์˜ํ•ด ์ง„ํ™”์‹œํ‚ค๋Š” ์ „๋žต์ด ํšจ๊ณผ์ ์ž…๋‹ˆ๋‹ค.

    ๋ฌธ์ œ ์ •์˜๊ฐ€ ๋ช…ํ™•ํ• ์ˆ˜๋ก ์„ค๊ณ„๊ฐ€ ์‰ฌ์›Œ์ง€๊ณ , ํ”„๋กœํ† ํƒ€์ดํ•‘์€ ์„ค๊ณ„๋ฅผ ๊ตฌ์ฒดํ™”์‹œํ‚ค๋Š” ๋„๊ตฌ์ž…๋‹ˆ๋‹ค.


  1. ๊ธฐ์ˆ  ์Šคํƒ ์„ ํƒ ์‹œ ํŒ€์˜ ์—ญ๋Ÿ‰์„ ์–ด๋–ป๊ฒŒ ๊ณ ๋ คํ•ด์•ผ ํ•˜๋Š”๊ฐ€?

    ๐Ÿ‘‰ โ€œ์ด ๊ธฐ์ˆ ์ด ์ข‹์€๊ฐ€?โ€๋ณด๋‹ค ์ค‘์š”ํ•œ ๊ฑด โ€œ์šฐ๋ฆฌ ํŒ€์ด ์ด ๊ธฐ์ˆ ์„ ์ž˜ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๋Š”๊ฐ€?โ€์ž…๋‹ˆ๋‹ค.

    ์ƒˆ๋กœ์šด ๊ธฐ์ˆ  ๋„์ž… ์‹œ ๋Ÿฌ๋‹ ์ปค๋ธŒ, ์ธ๋ ฅ ์ˆ˜๊ธ‰, ์œ ์ง€๋ณด์ˆ˜๊นŒ์ง€ ๊ณ ๋ คํ•œ ํ˜„์‹ค์  ๊ธฐ์ˆ  ์„ ํƒ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.


  1. ์„ฑ๋Šฅ ์ตœ์ ํ™”๋ฅผ ์–ธ์ œ๋ถ€ํ„ฐ ๊ณ ๋ คํ•ด์•ผ ํ• ๊นŒ?

    ๐Ÿ‘‰ ๋„ˆ๋ฌด ์ด๋ฅธ ์ตœ์ ํ™”๋Š” ๋‚ญ๋น„์ง€๋งŒ, ๋ฌด์‹œํ•˜๋ฉด ๋‚˜์ค‘์— ํฐ ๊ธฐ์ˆ  ๋ถ€์ฑ„๋กœ ๋Œ์•„์˜ต๋‹ˆ๋‹ค.

    ํ•ต์‹ฌ ๊ฒฝ๋กœ(ํ•ซํŒจ์Šค)์— ๋Œ€ํ•ด์„œ๋Š” ๊ธฐํš/์„ค๊ณ„ ๋‹จ๊ณ„๋ถ€ํ„ฐ ์„ฑ๋Šฅ์„ ๊ณ ๋ คํ•˜๊ณ ,

    ๋‚˜๋จธ์ง€๋Š” ์‹ค์ œ ๋ถ€ํ•˜๊ฐ€ ๊ด€์ธก๋œ ํ›„ ํŠœ๋‹ํ•˜๋Š” ๋ฐฉ์‹์ด ์‹ค์šฉ์ ์ž…๋‹ˆ๋‹ค.

profile
๊ฐœ๋ฐœ์— ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๋Š”, ์ด์Šˆ๋ฅผ ์ค„์ด๋Š” ํ™˜๊ฒฝ์„ ๋งŒ๋“ค๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

0๊ฐœ์˜ ๋Œ“๊ธ€