본문 바로가기

빗썸 테크코스 아카데미

(12)
Circuit Breaker - resilience4j Circuit Breaker 개별 모듈 장애로 인한 서비스 장애를 방지하기 위해 나온패턴이 서킷브레이커 전기 회로 차단기의 개념을 차용한 패턴으로 전기 흐름에 문제없으면 close 문제가 생기면 open하여 흐름을 차단 Circuit Breaker의 상태 정상 상태 : Closed 오류 상태 : Open 반열림 상태 : Half Open (일부 request만 실행해보면서 기능이 다시 정상적으로 동작하는지 확인하는 과정) 3가지 상태 전환 과정 Closed 상태 특정 모듈이 요청한 결과(성공/실패)를 기록. 실패 횟수(또는 시간)가 임계치에 도달했을시 Open 상태로 전환 Open 상태 지정된 시간만큼 open 상태를 유지하며 요청에 대해 지정된 결과를 응답한다.(예외를 던지거나 임시복구 데이터를 응답한..
마무리를 하며. 빗썸 테크 코스 아카데미가 마무리 되었다. 좋은 일도 많았고 아쉬운 부분도 많았다. 많은 것을 배우고 개선점을 찾아나가는 과정이라 생각하고 임하였고 성과를 몇가지 얻은 느낌이다. 1. 개발은 지속적인 소통의 과정이다. 백엔드 개발자로써, 팀장으로써, 개발을 진행하며 지속적인 소통을 해야함을 여실히 느끼게 되었다. 1) 처음 3명으로 시작하였지만, 1명이 도중에 하차하였고 프론트엔드 1명 백엔드 2명이 되었다. 그 과정에서 나는 나름대로 좀더 완성도 높은 결과물을 위해 codestates쪽에 인력요청을 드렸고, 대신 4명분의 aws비용보장을 받게 되었다. 2) 프론트 엔드와 소통을 진행하며, 나는 내 나름대로 Postman을 이용해 API 테스트를 하여 드렸지만, 예상치 못한 오류가 발새하였다. Cors에..
WebFlux(User service 구현) 환경설정하기 사용 라이브러리 webflux actuator spring cloud eureka client : 지정 된 eureka server에 해당 서비스를 등록할것이므로 설정한다. h2 database : h2 내장 memory DB를 사용할것이다. r2dbc : jdbc가 아닌 r2dbc를 사용할것이다. H2 DB 설정하기(In Memory DB) build.gradle에 dependency를 걸어준다. 2개의 config파일을 생성해준다. 이후 h2-console을 사용하기 위한 port번호를 설정 한 후 실행하면 H2DB는 세팅이 완료된다.
Eureka Server Eureka Server란? Eureka는 Middle-tier server( 비즈니스 로직이 위치한 애플리케이션 서버단)의 로드밸런스와 Failover를 위해 서비스를 배치해주는 REST 기반 서비스이다. 이 서비스는 주로 AWS Cloud에서 사용되고, 이를 Eureka Server라 부른다. Eureka Client란? Java 기반 클라이언트 요소도 있는데, 서버와 상호작용을 더 쉽게 해주는 것을 Eureka Client라 부른다. 클라이언트도 Round-Robin 방식을 기본으로 사용하는 로드밸런스를 내장하고 있다. Netflix에서는, Eureka에서 기본 로드 밸런스 외에도 트래픽, 리소스 사용량, 에러 상황 요소에 따라 로드밸런스를 할 수 있도록 제공해주고 있다. Eureka Server의..
API Gateway Api Gateway Service 역할 사용자 라우팅 설정에 따라 각각 end point로 클라이언트 대신해서 요청하고 응답받으면 전달해주는 일종의 proxy기능을 수행한다. 사용 이유 MSA Architecture 구조내에서 Micro service들이 변경을 했을 경우 마이크로 서비스들은 독립적인 빌드, 배포 되는 구조이고 AWS를 사용할 경우, Scale Up이나 Scale Out을 할 경우 IP주소 나 도메인 주소 변경의 우려가 존재한다. 따라서 Micro Service의 주소에다 직접 요청을 하는 클라이언트 입장에서는 변경이 필요하다. 상기의 이유들로 인해서 하나의 진입점을 가진 Gateway가 필요하게 되고, 이 Gateway는 Micro Service에 요청되는 모든 정보들을 일괄적으로 처..
2일차 Message Queue Message Queue 프로세스 또는 프로그램 간에 데이터를 교환할 때 사용하는 통신 방법이다. 메시지 지향 미들웨어 (Message Oriented Middleware, MOM) 비동기 메시지를 사용하는 프로그램 간의 데이터 송수신이다. MOM을 구현한 시스템을 MQ라고 한다. 특징 비동기 - Queue에 넣기 때문에 즉시 처리할 필요 없이 나중에 처리할 수 있다. 비동조- Application과 분리할 수 있다. 탄력성 - 일부가 실패하더라도 전체는 영향을 받지 않는다. 과잉 - 실패할 경우 재실행이 가능하다. 확장성 - 다수의 프로세스들이 큐에 메시지를 보낼 수 있다. 장점 애플리케이션 & 시스템 간의 통신 서버 간의 데이터를 주고 받거나 어떤 작업을 요청할 때 항상 시스템 장애를 염두해야 한다...
3일차 과제 리뷰 & 카프카 실습 예제 과제 리뷰 진행 과정 저번주에 발표 순서에 따라 나뉜 1조, 2조의 과제 발표가 있었다. 순서는 1조에서 2조의 순서대로 갔으며, 촉박한 시간에 의해서 두팀다 100% 완벽하진 않았지만 충분한 퀄리티를 가진 시스템을 만들었던걸 볼수 있었다. 다만, 나는 해당 과제를 수행하면서 다음과 같이 필요하 점을 느끼게 되었다. 보완해 나가야 할 점 1. 처음에 다 같이 설정을 잡고 시작해야 한다. WebFlux를 사용한 API 만들기 이다 보니 팀 내부에서도 누구는 R2DBC를 사용하고, 누구는 JDBC를 사용하고 이렇다 보니 종합하는 과정에서 JDBC나 R2DBC로 묶여야 하는 문제점이 있었다. 그렇다 보니 처음에 시작할 설정은 다 같이 잡고 시작하는것이 맞다라는 생각을 했다. 2. Swagger나 Spring ..
5일차 WebFlux Webflux springWebFlux란? Spring5에서 reactive stack을 지원하는 web container freamework Netty등 비동기 Non blocking 컨테이너 사용 springWebFlux특징 Non bolcking IO 최소한의 리소스로 효율적인 운영 Singler worker thread가 Event loop 처리 Functional Endpoints Lambda 기반 functonal programming model Reqeuest Router가 handler로 request routing Handler method에 @RequestMapping선언부 없이 request/reponse를 App에서 전부 제어 spring MVC와 WebFlux spring MVC와..