MSA

· MSA
Zuul 이란? Zuul은 넷플릭스에서 만든 API Gateway로 그루비로 작성되었으며 filter 개념을 통해서 API Gateway에 추가 기능을 넣고 관리할 수 있다. Microservice Architecture 에서 여러 클라이언트 요청을 적절한 서비스로 프록시하거나 라우팅하기 위한 서비스 Zuul을 왜 사용하는가? MSA를 구성하는 여러 서비스들의 엔드 포인트가 API 게이트웨이에 의해 단일화가 된다. 클라이언트로부터 시스템의 복잡도를 숨기는 효과 또한 기대할 수 있다. 다양한 형태의 요청과 많은 트래픽으로 생기는 문제를 신속하고, 동적으로 해결하기 위해서 groovy 언어로 작성된 다양한 형태의 Filter를 실행 Zuul Filter Zuul Filter는 크게 4가지 Filter로 나누..
· MSA
Spring Cloud Feign 이란? Netflix에서 개발된 Http client binder RestTemplate 호출 등을 JPA Repository 처럼 interface로 단순화 가능 Spring Data JPA 에서 실제 쿼리를 작성하지 않고 Interface 만 지정하여 쿼리실행 구현체를 자동으로 만들어주는 것과 유사 사용법 1. Feign Dependency 추가 ServiceA build.gradle dependencies { ... compile('org.springframework.cloud:spring-cloud-starter-openfeign') } 2. Main Class에 @EnableFeignClients 추가 ServiceA main class @EnableEureka..
· MSA
Eureka란? Middle-tier server(비지니스 로직이 위치한 애플리케이션 서버단)의 로드밸런스와 Failover를 위해 서비스를 배치해주는 REST 기반 서비스 주로 AWS Cloud에서 사용된다. Eureka Client Java 기반 클라이언트 요소도 있는데, 서버와 상호작용을 더 쉽게 해주는 것을 Eureka Client라 부른다. Ribbon - Client LoadBalancer 방식을 기본으로 사용하는 로드밸런서를 내장하고 있다. Netflix에서는 Eureka에서 기본 로드 밸런스 외에도 트래픽, 리소스 사용량, 에러 상황 요소에 따라 로드밸런스를 할 수 있도록 제공하고 있다. Eureka Server의 필요성 AWS Cloud에서는 특성상 서버가 자주 꺼졌다 켜졌다 한다. IP..
· MSA
Ribbon 이란? Called(API Caller)에 탑재되는 S/W 모듈 주어진 서버 목록에 대해서 Load Balancing을 수행함 Ribbon의 장점 H/W가 필요없이 S/W로만 Load Balancing 가능(비용 ⬇️, 유연성 ⬆️) 서버 목록의 동적 변경이 자유로움(단 Coding 필요) Load Balancing Schema를 마음대로 구성 가능(단 Coding 필요) 매우 다양한 설정 가능(서버선택, 실패 시 skip시간, Ping체크 등등) Retry 기능이 내장되어 있음 Eureka - Service Discovery 와 함께 사용되어 매우 강력한 기능 발휘(서버 목록을 자동으로 관리) Twelve-Factors 의 설정(Config)에 적합 사용법 1. Ribbon Dependen..
· MSA
Hystrix 란? 서킷브레이커 즉 회로차단기는 전기 기기에서 과부하나 과전류가 들어왔을때 메인 기기를 보호하기 위한 흔히 쓰는 회로 차단기를 말한다. MSA에서 서킷 브레이커는 특정 MSA 서비스의 장애로 인해 다른 MSA 서비스에도 장애를 일으킬 수 있는 가능성을 방지하기 위해 사용 Hystrix의 대표 기능 Thread timeout, 장애 대응 등을 설정해 장애 시 정해진 루트를 따르도록 할 수 있다. 미리 정해진 임계치를 넘으면 장애가 있는 로직을 실행하지 않고 우회 하도록 할 수 있다. 사용법 1. Hystrix Dependency 추가 ServiceA build.gradle dependencies { ... compile('org.springframework.cloud:spring-cloud..
· MSA
Twelve-Factors 란? Heroku 클라우드 플랫폼 창시자들이 정립한 애플리케이션 개발 원칙 중 유익한 것을 모아서 정리한 것 탄력적(elastic)이고 이식성 있는(portability) 배포를 위한 Best Practices 핵심 사상 선언적(목표명시) 형식으로 설정을 자동화해서 프로젝트에 새로 참여하는 동료가 적응하는 데 필요한 시간과 비용을 최소화한다. 운영체제에 구애받지 않는 투명한 계약을 통해 다양한 실행 환경에서 작동할 수 있도록 이식성을 극대화 한다. 현대적인 클라우드 플랫폼 기반 개발을 통해 서버와 시스템 관리에 대해 부담을 줄인다. 개발과 운영의 간극을 최소화해서 지속적 배포(continuous deployment)를 가능하게 하고 애자일성을 최대화 한다. 도구, 아키텍처, 개..
· MSA
Cloud Native란? 클라우드 네이티브는 클라우드의 규모와 크기 조정 및 성능에 최적화되어 있는 애플리케이션을 개발하기 위한 접근 방식과 기술 애플리케이션을 신속하게 구축하고 업데이트하면서 품질을 개선하고 위험을 낮추는 접근 방식 핵심은 애플리케이션을 어떻게 만들고 배포하는지에 있으며 기업 내 데이터센터와 달리 애플리케이션을 퍼블릭 클라우드에 배포하는 것 Cloud Native 애플리케이션 구축 일반적으로 데브옵스(DevOps) 에자일 방법론 마이크로서비스 아키텍처(Microservice Architecture) 클라우드 플렛폼 쿠버네티스(Kubernetes) 도커(Docker) 와 같은 컨테이너 그리고 지속적 제공(Continuous Delivery)을 포함 참고 사이트 Cloud Native C..
· MSA
MSA란? Microservice Architecture의 약자로 "하나의 큰 어플리케이션을 여러개의 작은 어플리케이션으로 쪼개어 변경과 조합이 가능하게 만든 아키텍쳐"라고 할 수 있다. 서비스간 느슨한 결합(Loose Coupling)과 높은 응집성(High Cohesion)을 지향 애플리케이션 기능을 분해하고 분리해서 완전히 상호 독립적이여야 한다. MSA를 왜 사용하는가? 기존에 많은 애플리케이션들은 Monolithic Architecture로 구현되어 있는데, 프로젝트 규모가 커지고 복잡도가 늘어날 수록 관리와 서비스 파악이 어렵고 단일 코드로 구축하기 때문에 배포도 모든 팀이 같이 해야한다. 이러한 단점을 개선하기 위해 Microservice Architecture를 사용한다. Microserv..
beekei
'MSA' 카테고리의 글 목록