안녕하세요. 팀드모네입니다.
오늘은 모놀로식 아키텍처의 개발, 운영 그리고 장단점에 대해서 알아보겠습니다.
MSA는 과거 모놀리식의 아쉬운 점을 해결하기 위해서 나타난 아키텍쳐입니다.
따라서 MSA를 이해하려면 모놀리식을 알아야하므로 모놀리식에 대한 설명을 먼저 진행하겠습니다.
👨💻 과거 모놀로식의 서비스 개발
1. 사업 초기에는 개발자가 1명이었다.
- 개발자가 소스코드를 만들어서 톰캣을 통해 로컬에서 실행함.
- 하나의 DB에 모든 정보가 저장됨.
👨💻 모놀리식 아키텍쳐의 장단점?
장점
- 개발이 단순 (repository에서 프로젝트 하나만 체크아웃 받아서 띄우면 됨)
- 배포가 단순 (war도 하나만 배포하면 됨)
- Scale-out이 단순 (서버를 더 도입하면 됨)
단점
- 무겁다 (100MB가 넘어가는 소스코드. 더 이상 IDE에서 실행이 안되는 순간이 찾아옴.)
- 어플리케이션 시작이 오래 걸림 (짧으면 20분... 1시간까지도 걸린다)
- 신기술 도입이 어렵다. 차세대 프로젝트(전부 새로 만들기)를 고려하게 된다.
- 서버 혹은 프로세스 장애가 발생하면 모든 서비스가 죽는다.
* 월요일 아침에 프로세스 장애로 온라인 쇼핑몰이 죽는다고 생각해보자. 피해는 정말 끔찍하다.
👨💻 과거 모놀리식의 운영 시나리오
1. 개발자가 5명이 됬다.
- 각 개발자가 소스코드를 만들어서 톰캣을 통해 로컬에서 실행함.
- 하나의 DB에 모든 정보가 저장함.
- SCM(git, svn)을 통해 형상관리를 한다.
2. 다 만들었으니, 상용으로 서비스를 오픈을 한다.
- (클린배포) 완성된 코드를 넣고 톰캣을 재기동한다.
* 무중단 배포는 불가능 하더라! 배포할 때는 서비스가 중단되므로, 항상 새벽에 배포해야한다.
3. 배포를 할 때마다 서비스가 멈춰버리니, 우리는
HA구성을 고민하게 된다.
- 톰캣을 한대 더 구입하고
Load Balancer(L4)를 배치한다.
* 그러면 지속적으로 구동되는 시스템이 된다.
4. 서비스가 흥해서 동시접속자 1000명을 넘어가기 시작했다!- 그러면 서버도 더 도입해야 하고, Load Balancer
(L4)에 새로운 서버의 URL도 넣어줘야 한다.
- 서버가 너무 많아서 수작업으로 배포하기 쉽지 않은 시점이다. 배포방식으로 Jenkins를 고려하게 된다.
... 생략
기존의 서비스가 너무 거대해졌을 때..
우리는 MSA 도입을 검토하기 시작한다.
Continue..
다음 포스팅 보러가기 -> https://doctorson0309.tistory.com/636?category=855122
reference : https://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm
reference : https://tv.naver.com/v/2292653
광고 링크 : https://ogx4.com