전통적인 애플리케이션 구축 방식.
제공하는 모든 서비스들이 하나의 애플리케이션에 통합되어 있는 방식
장점 : 모든 서비스가 하나의 큰 틀안에서 통합되어 있어 서비스 흐름에 따라 테스트하기 편하고 통합 관리가 쉽다.
다른 서비스의 호출이 쉽다(같은 시스템 안에서 서비스만 호출하면 돼서 쉬운 편.)
단점 : 서비스가 커질수록 새로운 기능을 추가하고 수정하기 어려워진다는 단점이 있다.
서비스, 기능 별로 개발하는 애플리케이션 구축 방식.
장점 : 독립적으로 작성되어 개발, 수정을 전체 서비스와 무관하게 따로 작업 가능.
서비스 별로 다른 프레임워크나 언어로 작성 가능.
전체 서비스에 대해 고려해야 하는 모놀리식 방식보다 상대적으로 수정 시 빠르게 작업 가능.
새로운 서비스나 오류 해결시 별도의 모듈로 작성된만큼 빌드와 배포가 빠르게 가능하다.
단점 : 각각 서비스가 별개로 작성되어 통합적인 관리가 어렵다. 다른 서비스의 기능을 부를 때 http 통신 등을 통해 호출해야 하므로 모놀리식에 비해 서비스 간 통신이 번거롭고, 이로 인한 통신 시 오류가 상대적으로 더 많음. 통합 테스트 어려움.
마이크로 서비스가 무조건 좋기만 한 것은 아니지만, 요즘 마이크로 서비스 형태로 많이 작업하는 이유는
AWS같은 IaaS, 클라우드 서비스들을 통해 애플리케이션 제공을 하는 최근의 환경과,
애자일 형태로 서비스를 빠르게 개발하고 배포해야 하는 최근 추세로 인한 결과가 아닐까 싶다.
아무래도 모놀리식으로 새로운 기능을 개발하거나 수정하게 되면 기존의 소스코드들에 대해 모두 고려 해야하고, 빌드와 배포 역시 전체 서비스 단위로 작동되어 애플리케이션이 커질수록 부담이 더 커질수 밖에 없었다.
때문에, 서비스가 커지고 회사가 커질수록 서비스를 MSA형태로 전환하는 추세인듯하다.
SourceTree - Organization Repository 안나올때 문제 해결 방법 (0) | 2022.11.04 |
---|---|
Git은 알겠는데 Git-Flow가 뭐지? (0) | 2022.09.23 |
Serverless 서버리스 서비스란? (0) | 2022.09.23 |
AWS 아마존 웹 서비스 가입하기 (0) | 2022.09.22 |
CI/CD란 무엇일까? (0) | 2022.09.22 |