티스토리 뷰

MSA

2. Microservices Architecture (MSA)

wavid 2020. 12. 21. 16:57

MSA 정의

  • MSA란 시스템을 여러개의 독립된 서비스로 나눠서, 이 서비스를 조합함으로서 기능을 제공하는 아키텍처 디자인 패턴.

 

아마존의 선택 (2002년경 제프 베조스 메일)

1. 모든 팀들은 데이터와 기능들을 서비스 인터페이스로 연결시켜라.
2. 팀들은 이 인터페이스를 통해서만 연락해야 한다.
3. 다른 어떤 커뮤니케이션 방법도 허용되지 않는다. 직접 링크를 보내거나 다른 팀의 스토리지에 직접 억세스 해서도 안 되며, 공유 메모리나 백도어 같은 것도 안 된다. 모든 커뮤니케이션은 네트워크를 통한 서비스 인터페이스로 이루어져야 한다.
4. 어떤 기술을 쓰든 상관없다. HTTP, Cobra, Pubsub, 독자 프로토콜...그건 상관없다. 베조스는 그런데 관심 없다.
5. 모든 서비스 인터페이스는 예외 없이 외부에서 이용 가능하게 만들어져야 한다. 그 말은 팀들은 외부 개발자들이 인터페이스를 이용할 수 있게 해야한다는 것이다. 예외는 없다.
6. 이를 실천하지 않는 사람은 누구든 해고될 것이다.

 

MSA

  • 공식적인 정의는 없다. 단지, 다음 공감대가 있을 뿐.

    • 각 서비스 간 Network를 통해, 보통 HTTP로 통신
    • 독립된 배포 단위
    • 각 서비스는 쉽게 교체 가능
    • 각 서비스는 기능 중심으로 구성됨. (e.g. 프론트엔드, 추천, 정산, 상품 등)
    • 각 서비스에 적합한 프로그래밍 언어, 데이터베이스, 환경으로 만들어진다.
    • 서비스는 크기가 작고, 상황에 따라 경계를 정하고, 자율적으로 개발되고, 독립적으로 배포되고, 분산되고, 자동화 된 프로세스로 구축되고 배포된다.
  • 마이크로서비스는 한 팀에 의해 개발할 수 있는 크기가 상한선이다. 절대로 3 ~ 9명의 사람들이 스스로 더 많은 개발을 할 수 없을 정도로 커지면 안된다.

  • '마이크로서비스는 아직까지 아이디어 수준에서 크게 벗어나 있지 않다. 다양한 산업 분야에서 폭넓게 적용되고 있지만 그것이 좋은지 나쁜지는 시간이 더 지나봐야 알 수 있다' - 조쉬롱, 케니 바스타니, 피보탈

 

모놀리틱 아키텍처 vs MSA

 

[참고 및 출처]

www.youtube.com/watch?v=mJMzV6GCmPw&list=PL9mhQYIlKEhdtYdxxZ6hZeb0va2Gm17A5&index=2

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함