마이크로서비스의 장점

  1. 작은 서비스 단위로 확장 가능
    1. 필요하면 추가하여 개발
    2. 다른 서비스와는 공통 인터페이스만 맞추면 됨
  2. 일부의 장애가 시스템 전체 장애로 이어 지지 않음
    1. 각 서비스 개별적인 장애는 다른 시스템에 장애를 일으키는 영향력이 적음.
  3. 서비스 단위로 자율적 배포 가능
    1. 각 서비스를 개발한 팀들은 기능 변경이 필요한 경우 개별 적으로 개발 후 배포
    2. 각 서비스들은 서로 다른 언어, 기술 스텍들을 이용해 개발할수있음.
  4. 빠르게 변화하는 비즈니스 환경에 민첩하게 대응 가능
    1. 각 서비스들은 성능 문제가 생기면 언어/프레임워크 자체를 교체하여 새롭게 개발할 수 있음.

-> 개인 의견 : 위 4개의 항목은 마이크로서비스의 SW 품질 요구 사항 같음

 

마이크로서비스의 단점

  1. 컴퓨팅 자원의 사용이 모놀리틱 보다 비효율적
  2. 성능 - 프로세스 내부 호출 보다 느리다.
  3. 메모리 - jvm 등 중복적인 자원 사용
  4. 운용 관리가 어려움
  5. 모니터링 대상 증가
  6. 배포 대상 서비스 증가 및 기술의 다변화
  7. 다양한 장애 상황 발생
  8. 단위 테스트 컴포넌트 테스트 난이도 증가
  9. DB 트랜잭션 처리 어려움
  10. 서비스 간 Polyglot Data Store 사용
  11. 분산 환경에서 트랜잭션 어려움

-> 개인 의견 : 1개의 서비스를 개발하던 팀이 통째로 나간다면..?? 그리고 단점이 생각보다 많음.

가장 큰 문제는 데이터의 일관성, 성능 문제 같음

마이크로서비스에서 요구하는 기술들

  1. Cloud 
    서비스 여러개를 배포하여 운영하는 클라우드
  2. NoSQL
    개별 서비스는 각기 다른 SQL과 개별 저장소를 이용하여 서비스를 운
  3. Docker, Kubernetes & Ecosystem
    도커 컨테이너를 이용해 편해진 배포 시스템
  4. Netflix OSS
    넷플릭스에서 배포한 마이크로서비스 지원 라이브러리
  5. 이외 여러 적용 사례 들 (아마존, 넷플릭스 등..)

 

 

 

 

 

+ Recent posts