마이크로서비스의 장점
- 작은 서비스 단위로 확장 가능
- 필요하면 추가하여 개발
- 다른 서비스와는 공통 인터페이스만 맞추면 됨
- 일부의 장애가 시스템 전체 장애로 이어 지지 않음
- 각 서비스 개별적인 장애는 다른 시스템에 장애를 일으키는 영향력이 적음.
- 서비스 단위로 자율적 배포 가능
- 각 서비스를 개발한 팀들은 기능 변경이 필요한 경우 개별 적으로 개발 후 배포
- 각 서비스들은 서로 다른 언어, 기술 스텍들을 이용해 개발할수있음.
- 빠르게 변화하는 비즈니스 환경에 민첩하게 대응 가능
- 각 서비스들은 성능 문제가 생기면 언어/프레임워크 자체를 교체하여 새롭게 개발할 수 있음.
-> 개인 의견 : 위 4개의 항목은 마이크로서비스의 SW 품질 요구 사항 같음
마이크로서비스의 단점
- 컴퓨팅 자원의 사용이 모놀리틱 보다 비효율적
- 성능 - 프로세스 내부 호출 보다 느리다.
- 메모리 - jvm 등 중복적인 자원 사용
- 운용 관리가 어려움
- 모니터링 대상 증가
- 배포 대상 서비스 증가 및 기술의 다변화
- 다양한 장애 상황 발생
- 단위 테스트 컴포넌트 테스트 난이도 증가
- DB 트랜잭션 처리 어려움
- 서비스 간 Polyglot Data Store 사용
- 분산 환경에서 트랜잭션 어려움
-> 개인 의견 : 1개의 서비스를 개발하던 팀이 통째로 나간다면..?? 그리고 단점이 생각보다 많음.
가장 큰 문제는 데이터의 일관성, 성능 문제 같음
마이크로서비스에서 요구하는 기술들
- Cloud
서비스 여러개를 배포하여 운영하는 클라우드 - NoSQL
개별 서비스는 각기 다른 SQL과 개별 저장소를 이용하여 서비스를 운 - Docker, Kubernetes & Ecosystem
도커 컨테이너를 이용해 편해진 배포 시스템 - Netflix OSS
넷플릭스에서 배포한 마이크로서비스 지원 라이브러리 - 이외 여러 적용 사례 들 (아마존, 넷플릭스 등..)
'Program > Software Architect' 카테고리의 다른 글
[마이크로서비스 4] 마이크로 서비스 성숙도 평가 모델 (0) | 2024.08.18 |
---|---|
[마이크로서비스 3] 마이크로 서비스 capabailties 모델 (0) | 2024.08.15 |
[마이크로서비스 1] 마이크로 서비스 개요 (0) | 2024.08.11 |
실용주의 프로그래머 Topic 51 실용주의 시작 도구 (0) | 2024.07.25 |
gcc sysroot 옵션을 이용한 opencv 크로스컴파일 (0) | 2024.07.17 |