Eureka란? Middle-tier server(비지니스 로직이 위치한 애플리케이션 서버단)의 로드밸런스와 Failover를 위해 서비스를 배치해주는 REST 기반 서비스 주로 AWS Cloud에서 사용된다. Eureka Client Java 기반 클라이언트 요소도 있는데, 서버와 상호작용을 더 쉽게 해주는 것을 Eureka Client라 부른다. Ribbon - Client LoadBalancer 방식을 기본으로 사용하는 로드밸런서를 내장하고 있다. Netflix에서는 Eureka에서 기본 로드 밸런스 외에도 트래픽, 리소스 사용량, 에러 상황 요소에 따라 로드밸런스를 할 수 있도록 제공하고 있다. Eureka Server의 필요성 AWS Cloud에서는 특성상 서버가 자주 꺼졌다 켜졌다 한다. IP..
분류 전체보기
반응형
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..
Hystrix 란? 서킷브레이커 즉 회로차단기는 전기 기기에서 과부하나 과전류가 들어왔을때 메인 기기를 보호하기 위한 흔히 쓰는 회로 차단기를 말한다. MSA에서 서킷 브레이커는 특정 MSA 서비스의 장애로 인해 다른 MSA 서비스에도 장애를 일으킬 수 있는 가능성을 방지하기 위해 사용 Hystrix의 대표 기능 Thread timeout, 장애 대응 등을 설정해 장애 시 정해진 루트를 따르도록 할 수 있다. 미리 정해진 임계치를 넘으면 장애가 있는 로직을 실행하지 않고 우회 하도록 할 수 있다. 사용법 1. Hystrix Dependency 추가 ServiceA build.gradle dependencies { ... compile('org.springframework.cloud:spring-cloud..
Twelve-Factors 란? Heroku 클라우드 플랫폼 창시자들이 정립한 애플리케이션 개발 원칙 중 유익한 것을 모아서 정리한 것 탄력적(elastic)이고 이식성 있는(portability) 배포를 위한 Best Practices 핵심 사상 선언적(목표명시) 형식으로 설정을 자동화해서 프로젝트에 새로 참여하는 동료가 적응하는 데 필요한 시간과 비용을 최소화한다. 운영체제에 구애받지 않는 투명한 계약을 통해 다양한 실행 환경에서 작동할 수 있도록 이식성을 극대화 한다. 현대적인 클라우드 플랫폼 기반 개발을 통해 서버와 시스템 관리에 대해 부담을 줄인다. 개발과 운영의 간극을 최소화해서 지속적 배포(continuous deployment)를 가능하게 하고 애자일성을 최대화 한다. 도구, 아키텍처, 개..
Cloud Native란? 클라우드 네이티브는 클라우드의 규모와 크기 조정 및 성능에 최적화되어 있는 애플리케이션을 개발하기 위한 접근 방식과 기술 애플리케이션을 신속하게 구축하고 업데이트하면서 품질을 개선하고 위험을 낮추는 접근 방식 핵심은 애플리케이션을 어떻게 만들고 배포하는지에 있으며 기업 내 데이터센터와 달리 애플리케이션을 퍼블릭 클라우드에 배포하는 것 Cloud Native 애플리케이션 구축 일반적으로 데브옵스(DevOps) 에자일 방법론 마이크로서비스 아키텍처(Microservice Architecture) 클라우드 플렛폼 쿠버네티스(Kubernetes) 도커(Docker) 와 같은 컨테이너 그리고 지속적 제공(Continuous Delivery)을 포함 참고 사이트 Cloud Native C..
MSA란? Microservice Architecture의 약자로 "하나의 큰 어플리케이션을 여러개의 작은 어플리케이션으로 쪼개어 변경과 조합이 가능하게 만든 아키텍쳐"라고 할 수 있다. 서비스간 느슨한 결합(Loose Coupling)과 높은 응집성(High Cohesion)을 지향 애플리케이션 기능을 분해하고 분리해서 완전히 상호 독립적이여야 한다. MSA를 왜 사용하는가? 기존에 많은 애플리케이션들은 Monolithic Architecture로 구현되어 있는데, 프로젝트 규모가 커지고 복잡도가 늘어날 수록 관리와 서비스 파악이 어렵고 단일 코드로 구축하기 때문에 배포도 모든 팀이 같이 해야한다. 이러한 단점을 개선하기 위해 Microservice Architecture를 사용한다. Microserv..
SSO(Single Sign-On)란? 한 번의(Single) 로그인 인증(Sign-On)으로 여러 개의 서비스를 추가적인 인증 없이 사용할 수 있는 기술 인증은 하나의 인증서버에서 수행하고, 그 인증 서버가 서비스를 각각 담당하는 서버에 인증 정보를 알려주는 방식 주로 다양한 서비스를 유사한 도메인 혹은 동일한 탑 레벨 도메인(TLD:Top Level Domain)을 서비스하는 엔터프라이즈 서비스 제공자들이 사용자에게 간편한 로그인을 제공하기 위해 사용한다. SSO를 구현하기 위한 기술 요소는? 인증 서버를 구축하고, 이를 다양한 서비스들과 어떻게 인증 관련으로 연계할지 설계해야 한다. 인증을 성공적으로 마쳤다는 "증거"를 다른 서비스들이 어떻게 믿게 만들 것 인지에 대한 기술적 고민도 필요하다. SS..
OAuth2란? 다양한 플랫폼 환경에서 인증 및 권한 부여를 위한 표준 프로토콜 OAuth 방식이 등장하기 전에는 다른 서비스의 리소스를 가져오기 위해서는 다른 사이트의 ID와 PW를 직접 입력받아 저장하여 필요할 때마다 불러와서 사용했다. 하지만 ID와 PW를 공개하는것과 보안등의 문제가 생기므로 이를 해결하기 위해 탄생한 표준 프로토콜이다. ex) 구글로 로그인, 페이스북으로 로그인, 카카오로 로그인 OAuth2 용어 인가 승인 유형(Authorization Grant Types) 인가 코드 승인(Authorization Code) 리스소 접근을 위한 사용자 명과 비밀번호, 권한 서버에 요청해서 받은 권한 코드를 함께 활용하여 리소스에 대한 엑세스 토큰을 받는 방식입니다. 클라이언트가 파리미터러 클라..
개발 환경 Java(11) Amazon Corretto JDK(11) Spring Boot(2.5.3) jvm.convert(3.3.2) spring-restdocs-asciidoctor spring-restdocs-mockmvc Config 1. Dependency 추가 및 설정 의존성 주입해줄 라이브러리와 플러그인을 추가하고 문서를 생성할 폴더 구조를 설정 plugins { ... // asciidoc파일을 변환해주고, Build폴더에 복사해주는 플러그인 id "org.asciidoctor.jvm.convert" version "3.3.2" ... } ... // ============== BEGIN Spring REST Docs ============== ext { snippetsDir = file..
Spring REST Docs란? 테스트 코드를 기반으로 자동으로 API문서를 자동으로 작성해주는 프레임워크 반드시 Test가 통과되어야 문서가 자동으로 작성되기 때문에 API Spec이 변경되거나 추가/삭제 되는 부분에 대해 항상 테스트 코드를 수정하여야 하며, API 문서가 최신화 될 수 있도록 해준다. 기본적으로 asciidoc을 사용하여 문서를 작성한다. Spring REST Docs Document RESTful services by combining hand-written documentation with auto-generated snippets produced with Spring MVC Test. docs.spring.io Spring REST Docs Architecture Test C..