본문 바로가기

코드프레소 체험단/MSA10

[마이크로서비스 아키텍처 : 패턴과 핵심 기술] MSA를 위한 아키텍처 패턴 - 서비스 디스커버리 패턴 서비스 디스커버리 MSA와 같은 분산 환경에서는 Network를 통한 API 호출이 필수이다 다른 서비스를 호출하기 위해서는 위치 정보를 알아야 한다 - IP, Port, URI 전통적인 환경에서는 서버들의 위치 정보가 정적인 경우가 많다 따라서 원격 서버의 위치 정보를 설정 파일 등으로 관리가 가능하다 기존 서비스에서는 Client가 다른 Service를 호출하려면, Client 내에 config 파일에서 다른 Service에 대한 정보를 정적으로 가지고 있어야 했다 또는 Service 앞에 Reverse Proxy 서버가 존재하여, Client가 요청을 보내면 이를 Reverse Proxy가 받아서 Service로 전달하는 방식을 사용했다 Reverse Porxy 안에 뒷 단의 Service 들에 대.. 2022. 5. 30.
[마이크로서비스 아키텍처 : 패턴과 핵심 기술] MSA를 위한 기술 - Service Mesh와 Istio Service Mesh Service Microservices의 Service를 말한다 Mesh 그물망 (톱니바퀴 따위가) 딱 맞물리다 모든 Microservice의 Service간의 관계망이 Mesh처럼 연결되어 있다는 의미로 만들어진 단어이다 Service 간의 네트워크 연결망에 초점을 둔 개념이다 SW를 배포하는 클러스터와 함께 위치하는 추가적인 Layer MSA에서 서비스 간 통신을 관리/제어/모니터링하는 SW Infrastructure Layer Service Mesh Layer는 Pod 간의 통신을 중재하는 역할을 한다 모든 컨테이너(Pod)간의 통신이 Service Mesh Layer를 통해서 한다 모든 통신들을 Proxy를 통해서 하는 방식이 Se.. 2022. 5. 30.
[마이크로서비스 아키텍처 : 패턴과 핵심 기술] MSA를 위한 기술 - Container, Docker, Kubernets Container 컨테이너 도입 이전의 문제점 Application을 다른 서버에 배포했더니 동작이 다르다 옛날에 설치한 서버와 최근에 설치한 서버 OS, 라이브러리 등의 버전을 완전히 맞추기가 어렵다 같은 미들웨어를 10대를 설치했는데 1-2대의 서버에서만 이상 동작을 한다 위의 문제점들은 인프라의 가변성이 근본적인 문제이다 Application은 다른 것에 의존한다 - 운영체제, CPU, 언어 런타임, 라이브러리 등등 Application이 의존하고 있는, Application을 둘러 싸고 있는 환경의 차이를 없애는 것이 중요하다 이러한 문제들을 Container를 통해 해결이 가능하다! Container란 외부 환경으로부터 격리된(isolated) 프로세스이다.. 2022. 5. 29.
[마이크로서비스 아키텍처 : 패턴과 핵심 기술] MSA를 위한 기술 - Spring Boot와 Spring Cloud Spring Framework EJB의 복잡성에 대한 대안으로 갭랃되어 두각을 나타냄 2004년에 버전 1.0 공개 DI와 XML 기반 설정으로 POJO를 그대로 사용할 수 있다 Spring을 걷어내도 Object를 그대로 사용할 수 있다 현재는 Annotaion이 중심이다 복잡한 설정 컴포넌트 스캔, 디스패쳐 서블릿, 뷰 리졸버, 웹 jar 들 설정 대안으로 Modern Framework 들이 등장하였다 Convention Over Configuration 복잡한 설정보다는 규약이나 관례 등의 약속들로 어플리케이션을 구성 Ruby On Rails Python Django Spring Boot Spring에서도 Modern Framework의 장점을.. 2022. 5. 28.
[마이크로서비스 아키텍처 : 패턴과 핵심 기술] MSA 분리 전략 - Microservice 분리 프로세스 서비스 분리 프로세스 서비스 분리 시 복잡도가 상당히 크다 프로세스는 이정표를 제시하여 복잡도를 완화해준다 완벽하게 정형화 된 SW 프로세스는 아니고 절차를 기술한 것이다 분리 대상 서비스 후보 선정 워크샵을 통해 서비스 분리 대상 후보를 선정한다 워크샵만으로는 분리 대상 서비스 확정이 어렵다 실제 코드/데이터 레벨에서 의존성 분석이 필요하다 2-3개 정도의 후보가 적절하다 자동화된 테스트 준비 MSA는 일종의 SW Reengineering이다 SW Reengineering 이란? 기능의 변경 없이 SW의 내부 구조를 변경하는 활동이다 일종의 리팩토링? 코드를 수정해쓴데 기능이 변경되지 않았음을 증명하는 방법 개발자를 믿는다? - 사실상 쉽지 않다 유일한 방법.. 2022. 5. 27.
[마이크로서비스 아키텍처 : 패턴과 핵심 기술] MSA 분리 전략 - 도메인 주도 설계 도메인 주도 설계 분리할 서비스의 식별 전략 MSA를 설계할 때 서비스를 어떻게 식별할 수 있는가? Art 영역 - 워크샵, 이벤트 스토밈ㅇ Science - 코드 의존성 분석, 데이터 의존성 분석 (기술적 측면) 서비스 분리와 도메인 주도 설계(DDD) DDD는 MSA의 서비스를 식별할 수 있는 도구를 제공한다 DDD는 전략적 설계와 전술적 설계로 이루어져 있는데, 전략적 설계가 MSA의 서비스를 식별하는데 도움이 된다 그러나, DDD도 은탄환이 아니다 DDD를 사용한다고 Monolithic 서비스가 MSA로 완벽하게 적용 가능한 것은 아니다 전략적 설계의 적용이 서비스의 올바른 식별을 보장하지는 않는다 DDD 또한 그저 서비스 식별을 도와주는 방법론/도구일 뿐이다 좋은 SW 개발을 위해서는 소프트웨어.. 2022. 5. 27.