[초보개발자 일지] 대세 MSA? 너 뭐니?
개요
마이크로서비스 아키텍처는(이하 MSA) 소프트웨어 개발 기법 중 하나이다. AWS, GCP, Azure, OCI 등 클라우드 시스템을 제공하는 회사들을 보면 출시되는 어플리케이션과 업데이트는 거의 마이크로서비스 아키텍처(이하 MSA)를 위해 맞춰져가고 있다고 해도 과언이 아닐 것이다. 실제로 클라우드 시스템에서 제공하는 어플리케이션도 마이크로서비스(Microservices)라고 보면 된다.
그렇다면 MSA가 뭐길래 관심이 많아지는걸까? 이에 Monolithic과 Microservices를 비교하고, MSA가 무엇이며, 어떤 문제점이 있는지 확인하려한다.
Monolithic과 Microservices 비교
마이크로서비스(Microservices, MS) 철학
“ 한 가지 일을 하되 잘 하라 ” — 유닉스 철학
마이크로서비스(Microservices, MS)가 뭐니?
- 전체 어플리케이션을 특정 목적을 가진 어플리케이션 단위로 나누는 것이다. 나누어진 어플리케이션은 다른 어플리케이션과 약한 결합도와 강한 응집도를 목표로 한다.
- 나누어진 어플리케이션으로 독립된 서비스를 제공하더라도 문제가 없어야 하는 것을 의미한다.
- 잘 정의된 API를 사용하여 통신한다. 응답으로 주어진 결과물을 신뢰한다.
- 어플리케이션을 독립적으로 배포 가능하다.
문제점
- 한 트랜젝션의 처리 및 각각의 어플리케이션 에러에 대한 처리가 필요하다.
- 어플리케이션의 숫자가 많아질수록, 복잡해질수록 테스트가 어려워진다.
- Monolithic에 비해 네트워크 레이턴시와 트래픽이 증가한다.
- 배포에 대한 자동화가 필수요소이다.
- 각각 어플리케이션의 데이터의 무결성을 책임지지 못한다.
“ 설계시 API 정의, 배포 등 모든 운영체계를 제대로 준비해놓아야한다. ”
마치며
- “완전히 MSA를 하기보다는 이렇게 조금씩 하다 보면 그 과정에서 배우는 것이 생기고, 또 기술을 개발하면서 점차 나아가는 게 최선이라고 생각한다.” — 케빈 매서니(Kevin Matheny) 가트너 시니어 디렉터 애널리스트
- 근래의 아키텍쳐 모델은 시스템에 대한 설계 사상 뿐만 아니라 개발 조직의 구조나 프로젝트 관리 방법론에 까지 영향을 미치기 때문에 단순히 기술적인 관점에서가 아니라 조금 더 거시적인 관점에서 고려를 해볼 필요가 있다. — 조대협
- 초보개발자의 욕심으로 대세를 알아가고, 경험하는 것은 동기부여가 된다. 하지만 주의해야한다. 기회가 온다면 좋겠지만, 욕심은 욕심으로 놔두자