왜 MSA인가?
MSA의 탄생과 배경에는 아키텍쳐의 히스토리를 살펴볼 필요가 있다.
*아키텍쳐는 시스템의 구조이다.
과거에는 시스템의 구조보다는 알고리즘, 데이터 구조에 집중적이었다. 소프트웨어의 복잡도와 활용도가 올라감에 따라 구조에 대한 중요도가 올라가게 되었다. 즉, 과거에는 클래스나 모듈 내부에 관심이 있었다. 왜냐하면 컴퓨터의 자원이 현 시대와는 다르게 성능 확장 및 시스템에 대한 접근성이 좋지 않았다. 하지만 현재는 어디에서나 네트워크의 발전과 클라우드 컴퓨팅을 통해 시스템에 접근이 가능하다. 위의 표를 보면, 소프트웨어 아키텍쳐는 1990년대에 크게 관심을 갖기 시작했다.
그러면 왜 소프트웨어 아키텍쳐가 관심을 가지게 된건지 알아볼 필요가 있다.
시간이 지남에 따라 소프트웨어는 현대 시대에 스며들어 고객의 요구사항은 복잡도를 갖고 발전했다. 한 예로는 소프트웨어가 이제는 사람의 생명과 직결되는 경우가 있다. 테슬라의 자율주행 차량을 보면 인명피해가 있는 것을 확인할 수 있다.
분산 컴퓨팅이 등장하고 그와 맞게 더 잘게 분산 되어진 MSA가 등장하였다.
아키텍쳐 트렌드의 흐름
1. Main-Frame
2. Client/Server
3. Web
4. SOA(Service Oriented Architecture)
5. REST
6. MSA
MSA는 공식적인 정의가 없다.
따라서 이를 정리하면서 나의 정리는 'MSA는 분산되어지는 것이다.'라고 생각한다.
MSA의 특징
1. 마이크로 서비스 아키텍처의 서비스들은 독립적인 deploy가 이루어져야한다.
2. 서비스의 교체가 쉽다.
3. 서비스 기능별로 분류된다.
4. 서비스들은 규모가 작고, 메시지 전달이 가능하며 컨텍스트별로 묶이며 자율적으로 개발되며 독립적으로 전개할 수 있으며 분산적이며 빌드가 되며 자동화된 프로세스들로 출시된다.
MSA의 장점:
1. 독립적인 배포로 빠르게 변하는 시대에 발 맞게 서비스를 배포할 수 있다.
2. 오류처리에 대한 서비스 격리로 서버 정상화에 대한 시간 단축할 수있다.
3. 유연한 확장으로 과부화된 서비스에 대해서만 확장이 가능하다.
MSA의 단점:
1. 개발 복잡도와 숙련도가 많이 요구된다.
2. 트랜잭션 처리 가 복잡하므로 데이터 동기에 대한 처리를 신경써야한다.
3. 통합 테스트의 어려움이 존재한다.
4. 배포의 복잡도 상승
위의 사진을 보면 각각의 클라이언트에서 각각의 다른 서비스에서 다른 DB를 통해 하나의 시스템을 완성하는 것을 볼 수 있다.
넷플릭스의 아키텍쳐를 보면 연두색은 서비스이도 서비스들끼리 연결된 모습을 볼 수 있다. 서비스 간의 연결성이 매우 많은 것을 확인 할 수 있다.
총평
현재 IT업계에서 시대를 이끌어가는 대표적인 기업들은 MSA로 개발이 진행된다. 이런 것처럼 나는 MSA가 왜 나오게 되었고 기술의 발전에서 공통된 기술은 무엇인지 고민하며 앞으로 나올 기술에서도 공통된 기술이 무엇인지 생각해보아야 한다.
Reference.