Microservice Architecture

Microservice μ•„ν‚€ν…μ²˜

μž‘κ³  λ…λ¦½μ μœΌλ‘œ κΈ°λŠ₯을 κ°€μ§„ μ„œλΉ„μŠ€λ“€λ‘œ 이루어져 있으며(각 db λ˜ν•œ λ…λ¦½μ μœΌλ‘œ μ‚¬μš©) API을 μ΄μš©ν•΄μ„œ 타 μ„œλΉ„μŠ€μ™€ ν†΅μ‹ ν•˜λŠ” ꡬ쑰λ₯Ό κ°€μ§„ μ•„ν‚€ν…μ²˜

μ΄μƒμš°λ§€λ‹ˆμ €λ‹˜μ΄ μ£Όμ‹  ν”Œλž«νΌ ꡬ성 μ»΄ν¬ν„΄νŠΈ 리슀트λ₯Ό 보고 그림을 λ³΄λ‹ˆκΉŒ μ‰½κ²Œ 이해!!!

μ—¬κΈ°μ„œ λ§Žμ€ 정보λ₯Ό 얻을 수 μžˆμ—ˆλ‹€ : https://www.nginx.com/blog/introduction-to-microservices/

λ…λ¦½μ μœΌλ‘œ 배포, ν™•μž₯ 될 수 μžˆλŠ” μ„œλΉ„μŠ€λ“€μ„ μ‘°ν•©ν•΄μ„œ ν•˜λ‚˜μ˜ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ κ΅¬μ„±ν•˜λŠ” 방식이닀! 그리고 항상 기술 쀑립적 ν”„λ‘œν† μ½œμ„ μ‚¬μš©ν•΄μ„œ ν†΅μ‹ ν•˜κΈ° λ•Œλ¬Έμ— μ„œλΉ„μŠ€ κ΅¬ν˜„ κΈ°μˆ κ³ΌλŠ” λ¬΄κ΄€ν•˜λ‹€.

μž₯점

  • μ„ΈλΆ€ μ„œλΉ„μŠ€λ‘œ λ‚˜λˆ μ„œ μž‘μ—…ν•˜κΈ° λ•Œλ¬Έμ— μ„œλ‘œμ—κ²Œ 영ν–₯을 λΌμΉ˜μ§€ μ•Šκ³  λ…λ¦½μ μœΌλ‘œ μ—­ν•  μˆ˜ν–‰

  • 독립적인 μ„œλΉ„μŠ€λ‘œ μ΄λ£¨μ–΄μ‘ŒκΈ° λ•Œλ¬Έμ—, λ‹€λ₯Έ μ–Έμ–΄λ‘œ λ³€κ²½ν•˜λŠ” 것도 용이

  • 각 μ»΄ν¬λ„ŒνŠΈλŠ” 독립적이기 λ•Œλ¬Έμ— λ…λ¦½μ μœΌλ‘œ 배포도 κ°€λŠ₯ν•˜λ‹€,

  • 각각이 독립적이기 λ•Œλ¬Έμ— 세뢀적인 ν™•μž₯도 μ‰½κ²Œ ν•˜λŠ” 것이 κ°€λŠ₯ν•˜λ‹€.

  • SRP(Single Responsibility Principle) 원리가 잘 적용됨

λ²ˆμ™Έ - 객체 μ§€ν–₯ μ„€κ³„μ˜ 5κ°€μ§€ 원칙(SOLID)

  • SRP(Single Responsibility Principle) : ν•˜λ‚˜μ˜ κ°μ²΄λŠ” ν•˜λ‚˜μ˜ κΈ°λŠ₯만 κ°€μ Έμ•Ό ν•œλ‹€.

  • OCP(Open Closed Principle) : ν™•μž₯μ—λŠ” μ—΄λ €μžˆμ–΄μ•Ό ν•˜κ³ , μˆ˜μ •μ—λŠ” λ‹«ν˜€μžˆμ–΄μ•Ό ν•œλ‹€.

  • LSP(Liskov Substitution Principle) : μžμ‹ ν΄λž˜μŠ€λŠ” μ–Έμ œλ‚˜ λΆ€λͺ¨ 클래슀λ₯Ό λŒ€μ²΄ν•  수 μžˆμ–΄μ•Ό ν•œλ‹€.

  • ISP(Interface Segregation Principle) : ν•˜λ‚˜μ˜ 일반적인 μΈν„°νŽ˜μ΄μŠ€λ³΄λ‹€ μ—¬λŸ¬ 개의 ꡬ체적인 μΈν„°νŽ˜μ΄μŠ€λ₯Ό κ΅¬ν˜„ν•˜μž

  • DIP(Dependency Injection Principle) : μƒμœ„ ν΄λž˜μŠ€κ°€ ν•˜μœ„ 클래슀λ₯Ό μ˜μ‘΄ν•˜μ§€ μ•Šλ„λ‘ κ΅¬ν˜„ν•˜μž

단점

  • ν•˜μ§€λ§Œ 각 μ„œλΉ„μŠ€λ³„λ‘œ API을 ν˜ΈμΆœν•΄μ„œ ν†΅μ‹ ν•˜κΈ° λ•Œλ¬Έμ— 속도가 느리고 μ˜€λ²„ν—€λ“œκ°€ λ°œμƒν•  수 μžˆλ‹€. => λ”°λΌμ„œ λΆ€λΆ„ μ‹€νŒ¨λ₯Ό μ²˜λ¦¬ν•˜λŠ” μ½”λ“œλ„ λ”°λ‘œ 처리λ₯Ό ν•΄μ€˜μ•Όν•œλ‹€.

  • 각 νŠΈλžœμž­μ…˜μ„ μœ μ§€ν•˜λŠ” 것이 μ–΄λ ΅λ‹€.

  • λ‹¨μœ„λ³„λ‘œ μ„œλΉ„μŠ€κ°€ λ‚˜λ‰˜μ–΄μ Έ 있기 λ•Œλ¬Έμ— ν…ŒμŠ€νŠΈλ₯Ό μ§„ν–‰ν•˜λ”λΌκ³  λ‹€λ₯Έ μ„œλΉ„μŠ€μ™€μ˜ ν™•μ‹€ν•œ 연동을 보μž₯ν•  순 μ—†λ‹€.

ν•œλˆˆμ— μ•Œμ•„λ³΄κΈ° μ‰¬μš΄ κ·Έλ¦Ό

APIλ₯Ό ν†΅ν•΄μ„œ requestκ°€ λ“€μ–΄μ˜€κ²Œ 되면 Service Layerμ—μ„œ λ°›μ•„μ„œ Core Layer에 λ“€μ–΄κ°€μ„œ μ²˜λ¦¬ν•΄μ£ΌλŠ” ꡬ쑰

좜처 : https://www.nginx.com/blog/introduction-to-microservices/

λͺ¨λ…Έλ‘œμ‹ μ•„ν‚€ν…μ²˜

기쑴에 μ•Œκ³  μžˆμ—ˆλ˜ μ§„ν–‰ 방식이 λͺ¨λ…Έλ‘œμ‹ μ•„ν‚€ν…μ²˜μ΄λ‹€. ν•˜λ‚˜μ˜ νŒ¨ν‚€μ§€ μ•ˆμ— λͺ¨λ“  μ»΄ν¬λ„ŒνŠΈλ“€μ΄ λ“€μ–΄μžˆλŠ” 방식이고, ν•œλ²ˆμ— λ‹€ λΉŒλ“œν•΄μ„œ λ°°ν¬ν•˜λŠ” 방식이닀.

λͺ¨λ…Έλ‘œμ‹ μ•„ν‚€ν…μ²˜λŠ” λΉ λ₯΄κ²Œ μ„œλΉ„μŠ€λ₯Ό λ§Œλ“€κ³  μ œκ³΅ν•  수 μžˆλ‹€λŠ” 점과 ν”Όλ“œλ°±λ„ λΉ λ₯΄κ²Œ λ°›μ•„μ„œ ν•΄κ²°ν•  수 μžˆλ‹€λŠ” 점이 μž₯점이라고 λ³Ό 수 μžˆλ‹€.

단점

  • ν•˜λ‚˜μ˜ ν”„λ‘œμ„ΈμŠ€ λ‚΄μ—μ„œ μ§„ν–‰λ˜κΈ° λ•Œλ¬Έμ— λ§Œμ•½μ— ν•œ κ³³μ—μ„œ μ—λŸ¬κ°€ λ‚˜λ©΄, λͺ¨λ“  ν”„λ‘œμ„ΈμŠ€κ°€ μ’…λ£Œ!

  • ν•˜λ‚˜μ˜ μ»€λ‹€λž€ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄κΈ° λ•Œλ¬Έμ— μˆ˜μ •ν•˜κ±°λ‚˜ κΈ°λŠ₯을 μΆ”κ°€ν•˜κΈ° μœ„ν•΄μ„œλŠ” 기쑴의 μ»€λ‹€λž€ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ— λŒ€ν•œ μΆ©λΆ„ν•œ 이해가 ν•„μš”ν•˜λ‹€.

  • ν”„λ‘œκ·Έλž¨μ΄ 크면 클수둝 ν”„λ‘œκ·Έλž¨μ„ μˆ˜μ •ν•΄μ„œ μ‹€μ œλ‘œ 돌리게 되면 μ‹œκ°„μ΄ 였래 κ±Έλ¦°λ‹€λŠ” 단점이 μžˆλ‹€.

ν•œλˆˆμ— μ•Œμ•„λ³΄κΈ° μ‰¬μš΄ κ·Έλ¦Ό

좜처 : https://www.nginx.com/blog/introduction-to-microservices/

Last updated

Was this helpful?