오늘은 스프링 입문주차가 끝난날이다.
CRUD를 기초적으로 구현하는 시험도 봤고 퀴즈(?)도 보고 오늘부로 입문주차가 끝나고
내일부터 숙련주차에 들어가는데 으으...
그래도 나름대로 핵심 키워드나 구현의 흐름은 이해하고 지나가는것 같아 마음은 가벼운것 같다.
다른건 아니고 조금 뜬금없기는 한데 오늘 튜터님께서 들어와서 퀴즈 리뷰를 해주시고
질문시간에 "아 요새는 MSA 개발 기법이 유행해요 알아서 손해볼거 없어요" 라는 말이 나와서 궁금해서 찾아보고 정리해보려고 한다.
MSA는 MicroService Architecture의 줄임말로, 소프트웨어 개발 기법 중 하나 라고 합니다.
MSA는 작고, 독립적으로 배포 가능한 각각의 기능을 수행하는 서비스들로 구성된 프 레임워크입니다.
경령화되고 독립적인 여러 개의 서비스를 조합하여 프로그램을 구현하는 방식이고,
서비스마다 자체 데이터베이스를 탑재하고 동작하기 때문에 개발부터 빌드, 배포까지
효율적으로 수행할 수 있습니다.
애플리케이션 개발 초기에는 전체 소스 코드를 하나의 배포 유닛 (war 또는 ear)으로 내장시키는 'Monolithic' 방식을 사용하였습니다.
하지만 기존 애플리케이션의 사소한 변경사항이 있더라도 자체적인 QA(Quality Assurance) 주기에 따라 업데이트를 하거나 일부 서비스 업데이트로 오류가 발생한 경우 전체 시스템을 중단하고 오류를 해결하는 등의 다운타임이 발생하는 일이 빈번하였습니다.
이러한 문제점을 해결하기 위해 애플리케이션의 핵심 서비스를 분할하는 MicroService Architecture라는 방식이 생겨났으며 각 서비스들을 독립적으로 구축하고 배포할 수 있게 되었습니다.
Monolithic은 소프트웨어의 모든 구성요소가 한 프로젝트에 통합되어 있는 형태이며,
모듈별로 개발을 하고 개발이 완료된 하나의 결과물로 패키징 하여 배포되는 형태를 의미합니다.
상세하게 다루지는 않고 근본적인 장점과 단점만 몇가지 소개 해보려고 합니다.
▶ 장점
▶ 단점
단점이 너무 명확해서 단점만 알고 있어도 될듯하다...!