MSA

· 회고
팀 역량 강화 왜 팀의 역량이 중요한가? 예전 소프트웨어는 크기가 작고 간단했지만 현대 소프트웨어는 신경쓸것도 더 많아지고 크기도 커지고 있다. 그것들을 혼자선 처리하긴 무리가 있기에 팀이라는 조직을 꾸리는것이다. 팀 역량이 프로젝트 전체에 역량으로 나타나기 때문에 팀의 역량이 중요하다 무엇이 팀의 역량에 영향을 미치는가? Psychological safety(심리적 안정) 기본적인 여유가 있어야 한다. 누구든 좋은 아이디어나 기술이 있다면 의견을 말할 수 있어야하고 비난받지 않을것이라는 확신이 있어야 한다. 안정되지 않은 팀은 정체될것이다. Impact of work(일에 대한 중요성인지) 내가 만든 사업이 어디에 어느정도 쓰였고 어떤곳에 긍정적 영향을 미쳤는지 본인이 알아야 동기부여와 자부심과 성취감..
· 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
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' 태그의 글 목록