비교
1. 모놀리식 아키텍처
2. 마이크로서비스 아키텍처
마이크로서비스가 아닌, 전통의 아키텍처를 지칭하는 의미로 생겨난 단어
1) 장점
기존 통합 개발 환경과 툴을 이용한 개발 용이
End-to-End 테스트 용이
빌드 결과를 WAS에 올리는 구조로 배포 용이
로드 밸런서를 활용하여 서버 부하를 분산하므로 시스템 확장 용이
2) 단점
새로운 기능 구현 시 코드 전체를 이해해야 하므로 코드 관리가 어려움
시간이 지날수록 빌드 및 배포 시간 증가
모듈별 하드웨어 확장이 어려움
일부 오류 발생 시 모든 프로세스에 영향
대형 소프트웨어 프로젝트의 기능들을 작고 독립적이며 느슨하게 결합 된 모듈로 분해하여 서비스를 제공하는 아키텍처
1) 특징
서비스 별로 별도의 데이터베이스 사용
데이터의 특성과 서비스의 특수성에 따라 효율적인 데이터베이스 선택 사용 가능
2) 장점
폴리그랏 아키텍처 : 여러 기술을 유연하게 사용하여 구성 가능
특정 서비스에 대해 선택적, 탄력적 확장 가능
서비스 간 영향 제한
빌드 및 테스트 시간 단축
3) 단점
성능 이슈 : 서비스 간 인터페이스로 Restfull API를 주로 사용하므로 모놀리식 아키텍처에 비해 성능 상 문제가 발생할 수 있음
관리 포인트 증가 : 서비스별 서버 수 만큼 로깅, 모니터링, 배포, 테스트, 클라우드 환경에서의 관리 부담 증가
자동화 및 모니터링 환경 구축으로 해결 가능
2. 마이크로서비스 아키텍처 설계
'서비스 개발 시 도메인이 중심이 되는 설계'
정보와 활동의 영역, 애플리케이션 내 로직들이 관여하는 데이터와 기능의 영역
구성
환경 설정 : 환경에 구애 받지 않고, 환경 정보를 참조할 수 있는 기능 제공
서비스 등록 및 감지 서빗 : 서비스 게이트웨이가 자동 인지할 수 있도록 지원
서비스 게이트웨이 : 요청에 대응하는 적절한 마이크로서비스로 연결
서킷 브레이커 : 다른 기능으로 대체 수행시켜 장애를 회피하는 기능
큐잉 서비스 : 마이크로서비스 간 데이터 전달 및 느슨한 결합을 위해 사용