목록어플리케이션개발/MSA (12)
코딩공작소

마이크로서비스의 주요 장점은 마이크로서비스가 상호 독립적으로 운영 환경에 빠르게 빌드, 수정, 배포되는 작은 코드 단위라는 것이다.자동화/반복성/완전성/불변성 빌드/배포 파이프라인 아키텍처 클라우드에 핵심 인프라스트럭처 설정도커 컨테이너로 배포되며, 컨테이너들은 EKS 클러스터의 단일 노드에서 실행된다. EKS는 도커 클러스터를 실행하는 데 필요한 서버를 구성하고 설정아마존 RDS와 아마존 ElasticCache 서비스를 사용모든 트래픽이 API 게이트웨이를 통과해야 한다.유효한 OAuth2 토큰을 제시해야 한다.EKS 컨테이너 내부에서만 해당 포트 액세스가 가능 ELK 배포ELK EC2 생성아마존 머신 이미지 선택인스턴스 타입 선택구성 세부 정보, 스토리지, 태그에 대한 기본 구성 설정새 보안 그..

스프링 클라우드 슬루스 : 필터를 추가하고 다른 스프링 컴포넌트와 상호 작용하여 생성된 상관관계 ID를 모든 시스템 호출에 전달집킨 : 서비스 간의 트랜잭션 흐름을 보여 주는 오픈 소스 데이터 시각화 도구 스프링 클라우드 슬루스와 상관 관계 ID상관관계ID는 트랜잭션이 시작될 때 트랜잭션에 할당된다. 스프링 클라우드 슬루스는 모든 코드 인프라스트럭처와 복잡성을 관리해 준다.상관관계 ID가 존재하지 않는다면 상관관계 ID를 생성해서 서비스 호출에 삽입아웃바운드 서비스 호출에 대한 상관관계 ID 전파를 관리하여 트랜잭션에 대한 상관관계 ID가 자동으로 추가되도록 한다상관관계 정보를 스프링 MDC 로깅에 추가하면 생성된 상관관계 ID가 스프링 부트의 기본 SL4J와 로그백 구현체에 자동으로 로깅될 수 있다.서..

애플레케이션 내 통신을 할 때, 반복되는 데이터 읽기의 서비스인 경우 캐싱이 유효할 수 있다.이는, 서비스에 대한 호출 응답 시간을 크게 향상시킬 수 있다. 캐싱 솔루션의 세 가지 핵심 요구 사항캐싱된 데이터는 라이선싱 서비스의 모든 인스턴스에 일관성이 있어야 한다.라이선싱 서비스를 호스팅하는 컨테이너 메모리에 조직 데이터를 캐싱하면 안 된다.업데이트나 삭제로 조직 레코드가 변경될 때 라이선싱 서비스는 조직 서비스의 상태 변화를 인식해야 한다. 이러한 요구 사항을 만족하는 방법 중조직 서비스가 자기 데이터가 변경되었음을 알리려고 비동기 이벤트를 발송하는 방법이 효과적이다.이 방법은 조직 서비스의 레코드가 변경되었을 때 메시지를 큐에 발행하고, 중개자(브로커)와 라이선싱 서비스는 조직 이벤트가 발생했는지 ..

보안이란 매우 중요한 작업이다애플리케이션 계층 : 적잘하게 사용자를 통제하여 사용자 본인 여부와 수행하려는 작업의 수행 권한 확인인프라스트럭처 : 취약점의 위험도를 최소화하도록 서비스를 항상 실행하고 패치하고 최신화네트워크 계층 : 서비스가 명확히 정의된 포트를 통해 인가된 소수의 서버에만 접근 할 수 있도록 네트워크 접근 통제 구현 OAuth2사용자가 요청을 수행하기 위해 여러 서비스를 호출할 때, 각 서비스에 사용자를 인증하는 것그랜트라는 인증 체계를 통해 REST 기반의 서비스를 보호할 수 있다.패스워드(password)클라이언트 증명(client credential)인가 코드(authorization code)암시적(implicit) 키 클록서비스와 애플리케이션을 위한 ID 및 액세스 관리용..

게이트 웨이는 무슨 역할을 할까아키텍처의 모든 마이크로서비스 호출에 대한 필터와 라우터 역할을 서비스로 추상화한다.즉, 유입되는 모든 트래픽의 게이트키퍼 역할을 수행한다. 서비스 게이트웨이에서 구현할 수 있는 횡단 관심사정적 라우팅 : 단일 서비스 URL과 API 경로로 모든 서비스를 호출동적 라우팅 : 서비스 요청을 검사하고요청 데이터를 기반으로 서비스 호출자를 위한 지능적 라우팅을 수행인증과 인가 : 서비스 호출자가 자신의 인증 여부를 확인할 수 있는 적합한 장소이다지표 수집과 로깅 : 기본 지표를 한곳에서 더욱 잘 수집할 수 있도록 해준다. 서비스웨이 서비스를 위한 구성(컨피그) 서버에 유레카 구성 정보를 추가해야 한다.server : port : 8072eureka : instance : ..

서비스가 망가지면 쉽게 감지할 수 있으며 애플리케이션은 이를 우회할 수 있다.그러나,서비스가 느려진다면 성능 저하를 감지하고 우회하는 일은 어렵다.그 이유로는,1. 성능 저하는 간헐적으로 시작되어 확산될 수 있다.2. 호출은 대게 동기식이며 장기간 수행되는 호출을 중단하지 않는다.3. 부분적인 저하가 아닌 완전한 실패를 처리하도록 애플리케이션을 설계한다. 해당 포스팅에서는 4가지의 클라이언트 회복성 패턴을 소개한다. 1. 클라이언트 측 로드 밸런싱물리척 위치를 캐싱하는 작업을 말한다. 클라이언트 측 로드 밸런서가 문제를 탐지하면 가용 서비스 풀에서 문제된 서비스 인스턴스를 제거하여 해당 서비스 인스턴스로 더이상 호출되지 않게 한다. 2. 회로차단기회로 차단기 패턴은 원격 자원에 대한 모든 호출을 모니터링..

서비스 디스커버리란 ?애플리케이션이 사용하는 모든 원격 서비스의 주소가 포함된 프로퍼티 파일을 관리하는 것 처럼 단순하거나 저장소처럼 정형화된 것일 수 있다.수평확장 : 서비스 내 더 많은 서비스 인스턴스 및 컨테이너를 추가하는 것과 같은 조정회복성 : 비즈니스에 영향을 주지 않고 아키텍처와 서비스 내부의 문제로 충격을 흡수하는 능력즉, 디스커버리의 이점은 해당 환경에서 실행 중인 서비스 인스턴스의 수를 빠르게 수평 확장할 수 있다.또한, 회복성을 향상시켜 엔진이 사용 불가한 서비스를 우회해서 라우팅하기 때문에 다운된 서비스로 입은 피해를 최소화한다. 기존의 로드 밸런서에 대해로드 밸런서는 중앙 집중식 네트워크 인프라스트럭처로 처리할 수 있는 대부분의 애플리케이션 크기와 규모를 가진 기업 환경에서 잘 ..

애플리케이션 구성 관리분리 : 물리적 배포에서 서비스 구성 정보를 완전히 분리해야 한다추상화 : 구성 데이터의 접근 방식을 추상화해야 하며, REST 기반 JSON서비스를 사용해야 한다중앙 집중화 : 가능한 적은 수의 저장소로 애플리케이션 구성 정보를 모아야 한다견고화 : 구현할 솔루션은 가용성이 높고 이중화가 필요하다이렇듯, 코드를 외부로 분리할 때 외부 의존성이 생겨서 이를 관리하고 버전 제어한다는 것이다.구성 데이터는 추적 가능하고 버전을 제어할 수 있어야 한다. 인스턴스가 시작되면 서비스 엔드포인트를 호출하여 동작 중인 환경별 구성 정보를 읽어 온다실제 구성 정보는 저장소에 보관된다. 구성 저장소 구현체에 따라 구성 데이터를 보관하는 다양한 방법을 선택할 수 있다응용 프로그램이 배포되는 방식과는..

마이크로서비스를 성공적으로 유지하려면 이식성 문제를 해결해야 한다.컨테이너는 마이크로서비스에 속도와 이식성, 확장성과 같은 이점을 제공한다.이를 해결해주는 것이 바로 도커이다.컨테이너는 이식성을 높여 준다완전히 격리된 예측 가능한 환경을 생성해준다더 빠르게 시작하고 중지할 수 있어 클라우드 네이티브가 가능하다확장 가능하고자원 활용을 최적화하는 데 능동적으로 스케줄링하고 관리할 수 있어, 애플리케이셔늬 성능과 유지 보수성을 높인다 도커란?컨테이너로 된 소프트웨어를 서버에 배포하는 데 널리 사용되는 도구 중 하나이다.컨테이너는 애플리케이션이 실행하는 데 필요한 모든 것을 제공하는 논리적 패키징 메커니즘을 의미한다. 도커 데몬 : 도커 이미지를 생성하고 관리하는 도커 클라이언트 : 사용자는 클라이언트를 통해..

마이크로서비스 프로젝트 아키텍쳐는 세 가지 핵심 업무에 집중한다.비즈니스 문제 분해서비스 세분화 확정서비스 인터페이스 정의 비즈니스 문제 분해명사에 주목동사에 주목데이터 응집성을 찾기 서비스 세분화 확정광범위하게 시작하여 더 작은 서비스로 리팩토링서비스간 교류하는 방식에 중점도메인에 이해가 깊어지면서 서비스 책임도 계속 변한다. 여기서 나쁜 서비스의 징후들은 ?책임이 너무 많은 서비스다수 테이블에 걸쳐 데이터를 관리하는 서비스테스트가 너무 많은 서비스 그렇다면 너무 작은 서비스는?마이크로서비스가 토끼처럼 번식한다지나치게 상호 의존적이다서비스들이 단순 CRUD서비스 집합이 된다 서비스 인터페이스 설계REST 철학을 수용해라URI를 사용하여 의도를 전달해라요청과 응답에 JSON을 사용해라HTTP 상태 코드로..