Monolithic ?

 

MSA에 대해 정리하기 전에, 반대되는 개념인 Monolithic을 살펴봤다.

 

흔히 우리가 개발할때 하나의 war나 directory로 묶어서 배포하는 방식을 의미한다.

 

쇼핑몰 홈페이지를 구축한다고 가정하여, Monolithic의 단점과 왜 MSA가 떠오르게 되었는지 서술하려한다.

 

 


 

조그마한 변경도, 시스템 전체에 영향을 줄 수 있다.

프로젝트로 회원가입, 로그인, 장바구니, 구매등의 기능이 있는 홈페이지를 하나 만들었다고 가정하자.

 

고객으로부터 포인트 서비스를 개발해달라는 요청을 받아, 아래와 같이 프로세스를 진행하는 중이다.

 

요구사항 분석 - 설계 - 개발 - 빌드 - 테스트

 

오랜시간에 걸쳐 테스트까지 완료되었고, 운영서버에 배포하고 서비스를 확인하려 했으나...

 

 

다른쪽 코드는 건들지도 않았는데, 메인페이지부터 모든 서비스가 안되기 시작한다.

 


강력한 결합으로, 컴포넌트의 변경이 다른 컴포넌트에 영향을 미침

 

고객 요청사항을 위해, 로그인 방식을 바꾸려고 한다.

 

이 기능은 시스템의 자바버전으로 구현이 어려워서, 버전을 올리고 코드를 반영했다.

 

배포 후, 기능이 잘 동작하는것에 미소짓고 있었는데...?

 

회원가입이 안된다는 VOC가 마구들어오고 있었다.

 

회원가입 중 일부기능이 신규 자바버전과 호환되지 않는 탓이었다.

 


 

고객의 요구사항 반영이 늦어짐

 

크게 데인 우리는, 기준을 높여 배포를 진행하기로 하였다.

 

1) 코드 변경 시, 엄격한 영향도 조사

2) 특정 서비스를 개발도중에, 관련 서비스까지 모두 타팀에서 건들지 말 것

3) 최소한의 서비스 중단을 위해, 고객들이 이용하지 않는 저녁시간 이후에 배포할 것

 

이후에, 하나의 요구사항 반영에는

개발 및 테스트시간보다 기타 절차들에서 시간이 더 걸리게되었고, 우리는 고객들의 불만에 시달렸다...

 

 


배포시간의 증가

 

시간이 지나 우여곡절끝에,  시스템은 안정화되었고 평화로운 나날을 보내고 있었다.

 

어느날 간단한 소프트웨어 패치로, 배포를 하게되었는데

 

반영버튼을 누른뒤로, Admin 페이지는 모래시계만 돌고 서비스도 계속 작동을 하지 않았다

 

특별한 에러로그는 없이, 계속 서비스는 내려가있었고 결국 프로세스를 재시작하기로 하였다.

 

가동하면서 로그를 봤는데 웬걸. 너무나 시스템이 커져버린탓에 몇 십분씩 걸리는 거였다.

 

(1)번째 서비스가 가동되었습니다. ( 19:33 )
(2)번째 서비스가 가동되었습니다.
                     ·
                     ·
                     ·
(153)번째 서비스가 가동되었습니다. ( 19:45 )

개별 프레임워크 구성이 어려움

 

고객 요청으로 154번째 서비스를 추가하려고 한다.

 

마침 쉽고 효과적으로 적용할 수 있는 오픈소르를 찾았고, 기쁘게 관련 문서를 뒤져봤는데.....

 

호환 언어 : Python

 

'IT > 아키텍처' 카테고리의 다른 글

Rest  (0) 2021.07.29
MSA ( MicroService Architecture )  (0) 2021.07.13

+ Recent posts