MSA란

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

  • 공식적인 정의는 없지만, 다음 공감대가 있을 뿐(Microservice in 위키피디아)
    • 각 서비스간 Network를 통해, 보통 HTTP를 통해
    • 독립된 배포 단위
    • 각 서비스는 쉽게 교체 가능
    • 각 서비스에 적합한 프로그래밍 언어, 데이터베이스, 환경으로 만들어 진다.
    • 서비스는 크기가 작고, 상황에 따라 경계를 정하고, 자율적으로 개발되고, 독립적으로 배포되고, 분산되고, 자동화 된 프로세스로 구축되고 배포된다.
  • 마이크로서비스는 한 팀에 의해 개발할 수 있는 크기가 상한선이다.
    • 절대로 3~9명의 사람들이 스스로 더 많은 개발을 할 수 없을 정도로 커지만 안된다.
  • 마이크로서비스는 아직까지 아이디어 수준에서 크게 벗어나 있지 않다.
    • 다양한 산업분야에서 폭넓게 적용되고 있지만 그것이 좋은지 나쁜지는 시간이 더 지나봐야 알 수 있다. - 조쉬 롱, 커니바스타니, 비보탈

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

  • 모든 팀들은 데이터와 기능들을 서비스 인터페이스로 연결시켜라.
  • 팀들은 이 인터페이스를 통해서만 연락해야 한다.
  • 다른 어떤 커뮤니케이션 방법도 허용되지 않는다.
    • 직접 링크를 보내거나 다른 팀의 스토리지에 직접 액세스 해도도 안 되며, 공유 메모리나 백도어 같은 것도 안된다.
    • 모든 커뮤니케이션은 네트워크를 통한 서비스 인터페이스로 이루어져야 한다.
  • 어떤 기술을 쓰든 상관없다.
    • HTTP, corba, Pubsub, 독자프로토콜 등등. .
  • 모든 서비스 인터페이스는 예외없이 외부에서 이용 가능하게 만들어져야 한다.
    • 팀들은 외부 개발자들이 인터페이스를 이용할 수 있게 해야 한다는 것이다.
    • 예외는 없다.
  • 2006년 아마존 웹 서비스 (AWS)릴리즈
    • 내부적으로 사용한 것과 똑같은 플랫폼

넷플릭스의 선택

  • 2008년 데이터베이스에 심각한 문제가 발생해 고객에게 DVD를 보낼 수 없는 사태 발생 (Single points of failure)
    • Scale-up 확장만 가능한 인프라 스트럭쳐와 단일 장애 지점 (SPOF)이라는 한계에서 벗어나길 선언
    • 그 시작은 아파치 카산드라
  • 2009년 아마존 웹서비스(AWS)로 이관 시작
    • 세 가지 목표에 집중
      • 확장성 (Scalability)
      • 성능 (Performance)
      • 가용성 (Availability)
  • "자체 보유 인프라와 솔루션으로는 이렇게 급증한 트래픽을 감당할 수 있는 확장성을 확보할 수 없었을 것" - Best of AWS
    • 유리 이즈라일레프스크(Yuri Izrailevsky)

Monolithic VS Microservices

  • No labels
Write a comment…