자국 시장에서 서비스하던 기존의 기업 운영 트렌드는 시대가 지나면서 글로벌 시장으로 확대되고 있다. 글로벌 고객이 확대되면서 경쟁도 치열해지고 이러한 경쟁 압박이 생기면서 기업들은 아래의 문제점을 겪기 시작했다.
복잡성 증가
고객은 조직의 모든 부분이 자신을 인식하길 원한다. 단 하나의 데이터베이스와 통신하고 다른 애플리케이션과 통합하지 않는 단절된 애플리케이션을 원하지 않으며 회사 데이터센터 내부의 서비스와 데이터베이스를 넘어 외부 서비스 제공자와도 통신하길 원한다.
고객은 더 빠른 출시를 원한다
고객은 더 이상 소프트웨어 패키지를 연 단위로 릴리스하거나 업데이터를 원하지 않는다. 대신 새로운 기능이 몇 주나 며칠 안에 빠르게 릴리스되길 기대한다.
성능 및 확장성
글로벌 애플리케이션에선 애플리케이션이 처리해야 할 트랜잭션 양과 유입될 시점을 예측하기 어렵다. 애플리케이션은 여러 서버로 신속히 확장한 후 확장이 필요 없다면 축소해야 한다.
고객은 애플리케이션을 항상 사용할 수 있길 기대한다
애플리케이션의 한 부분에서 에러나 문제가 있어도 애플리케이션 전체가 다운되어서는 안 되고 회복성이 높아야 함.
이러한 기대 사항을 충족하기 애플리케이션을 기존의 모놀리식 구조에서 벗어나 독립적으로 빌드하고 배포할 수 있는 작은 서비스 단위로 애플리케이션을 분해할 필요성이 생겼다
✔️ 분산 방식의 애플리케이션 구축의 장점
유연성(flexible)
새로운 기능을 신속하게 제공하도록 서비스를 분리된 단위로 구성하고 재배치한다면 코드 변경에 따른 예상되는 위험과 배포를 위한 테스트 시간을 줄 일 수 있다.
회복성(resilient)
전체 애플리케이션의 작은 부분에 장애가 발생하여 서버가 다운되더라도 그 부분만 다운되고 애플리케이션의 나머지 기능은 원활히 사용할 수 있다.
확장성(scalable)
분리된 서비스를 여러 서버에 수평적으로 쉽게 분산할 수 있다. 반면 모놀리식 애플리케이션은 한 부분에 트래픽이 몰리더라도 인프라 전체를 (수직적으로) 확장해야 한다.