일단 모노리틱 아키텍쳐에 대해서 알아보면 -단일 기술로 사용 -관리는 편함 -하나의 서버에 모든 비지니스 로직이 들어가 있는 형태 -하나의 집중화된 데이터베이스에 모든 데이터가 저장됨 -여러개의 기술을 혼용하기 어려움 (node.js. spring, Ruby, python) -배포 및 재기동 시간이 오래 걸림 -수정이 용이하지 않음 (타 컴포넌트 의존성) 마이크로서비스 아키텍쳐란? -시스템을 여러개의 독립서비스로 나누어 연결 -SOA의 경량화 버전 -인터페이스로는 (Rest,Thrift,Protocolbuffer,AMQP...) -End point는 API gateway -여러 API를 묶어서 요구사항에 맞는 로직을 구현해야 하는 곳 : Orchestration -Common APIs는 여러 서비스들이다 마이크로서비스의 장점 -홈쇼핑을 예로들어 -사용자관리,상품관리,주문관리를 해야함 -이 세가지의 기능을 분리하여 개별서비스로 만듬 -신뢰성이 필요한시스템(사용자관리,주문관리)는 JAVA로 만듬 -상품관리는 신뢰성이 비교적 덜 중요하기떄문에 빠르게 개발할수 있는 node.js+mysql로 구현 -복잡한 데이터 면 RDMS를 사용 -양이 많고 단순한 데이터면 NoSQL 사용 -ROI향상 및 TCO경감(개발기간다운 및 기존서비스재사용, 싼머신채용가능) 단점 -테스팅이 어려움(서비스하나를 추가하면 종속요소가 많이 늘어남) -장애 진단 -팀의 역량에 따른 일정 및 품질 문제 -트렌젝션 관리 API 게이트웨이 -API인증/인가 -로깅 -라우팅 -메시지 변환 -메시지 프로토콜 변환 -있어도되고 없어도 됨(없으면 클라이언트가 하부서비스에 개별 접근해야겠지) -잘못쓰면 망하는 지름길 그래서 실패를 염두에 두고 디자인해야한다 시스템의 다운타임, 서비스 속도 지연, 얘기치않은 응답등을 처리할 수 있어야함 그리고 로드밸런싱도 중요하다 http://cfile8.uf.tistory.com/image/27...
댓글
댓글 쓰기