한동안 채용과제와 이사 등으로 블로깅이 아~주 뜸했다..
오늘은 채용된 기업의 제품이 사용하는 서버에 대해 알게되었고, 관련된 간략한 정보들을 정리해 놓고자 함!
Monolithic Architecture 소프트웨어의 모든 구성요소가 한 프로젝트에 통합되어 있는 형태
(ex. 부트캠프 과정 중 진행한 프로젝트들의 경우 하나의 Node 서버가 프로젝트의 모든 기능을 처리했음)
Scale out
이 불리하다Scale out? 서비스의 확장, 이용자의 증가 등을 이유로 더 많은 서버 용량과 성능을 필요로 하게될 때, 서비스가 기능별로 분리된 서버를 가지고 있다면, 해당 서비스의 서버만 확장할 수 있지만, Monolithic의 경우 전체 서버를 확장해야 한다
너무 많은 기능들을 하나의 어플리케이션에 담다보니, 서로 의존성이 높아짐
즉, 일정 규모 이상의 서비스에서 Monolithic architecture는 한계를 보인다
독립적으로 배포 가능한 각각의 기능을 수행하는 서비스로 구성, 하나의 큰 어플리케이션을 여러 개의 작은 어플리케이션으로 나눠 만드는 아키텍처
Scale out
유리기존의 온프로미스 서버 기반의 Monolithic Architecture에서 클라우드 환경을 이용하여 서버를 구성하는 MSA로 많은 서비스들이 전환되고 있다
무작정 어느 Architecture가 좋다!기보다는 상황과 필요에 따라 유리한 것을 선택하는 것이 바람직!
** Scale up vs Scale out
ex) 엘리베이터의 성능을 증가시켜 더 많은 이용객을 담당한다 vs 엘리베이터의 수를 늘려 더 많은 이용객을 담당한다
하드웨어의 사양을 높여준다 vs 하드웨어의 수를 늘린다
수직적 확장 vs 수평적 확장
수평적 확장은 쿠버네티스와 같은 오케스트레이션을 이용해 중단 없는 확장도 가능하다