반응형

2023/05 9

Webclient 동작 원리 및 Configuration

개요 Webclient는 Spring Webflux에 포함된 외부 요청 / 응답에 대한 Handling을 담당하는 모듈이다. 기존 RestTemplate의 요청 응답 사이의 동기성을 해결하고, 보다 효과적으로 서버 리소스를 사용하기 위해 등장했다. 내부적으로 비동기적으로 구성되어 있으며, 구현은 Spring Webflux를 활용했다. WebClient 사용 분석 WebClient는 총 4단계로 요청 -> 응답 처리를 추상화하였다. Http Config → Reqeust Config → Exchange → Response Handling 각각 - http 기본 설정 (socket 설정 포함) - 요청 정의 - 발송 - 응답 처리 1. Build with Config WebClient.builder() ....

개발 일지 2023.05.30

#1 EasyCalendar 기획 및 설계

개요 일정 정리를 위한 Calendar 관리는 제 삶에 필수적인 사항입니다. 하지만, 일정 입력 시 UX 적으로 번거로운 부분이 있습니다. 가령 반복적이지만 비 정기적인 일정 (운동, 모임 같은)을 입력할 때 날싸선택 -> 내용 입력 -> 시간 입력 -> 장소 입력 등등의 과정을 거치며 조금 더 편하게 입력할 수 있지 않을까 합니다. 기획 EasyCalendar란 반복적으로 일어나는 컨텍스트를 템플릿 화 하여, 반복되는 내용을 미리 입력해 놓고, 간편하게 등록하는 웹 서비스이다. 전체적인 구성으로는 4 페이즈로 나누어집니다. 1. 로그인 / 구글 연동 페이즈 - 최초 EntryPoint에서 p-bear 로그인 연동을 통해 로그인 및 토큰 발급 - 서비스 진입 시 구글 연동을 확인하며, 구글 연동 실패 /..

Kafka Connect 사용성 검토

개요 - 데이터 파이프라인 생성 시 반복 작업을 줄이고 효율적인 전송을 이루기 위한 애플리케이션 - 반복작업에 대해서 매번 Producer, Consumer 애플리케이션의 배포/운영해야 하는 비효율 보완 - Connect 를 이용하면 특정한 작업 형태를 템플릿으로 만들어 놓은 Connector 를 실행함으로써 반복작업을 줄일 수 있음. - Kafka 브로커와 별도의 클러스터를 구성하며 Connector 가 실행되는 환경을 제공 장단점 장점 단점 관리 용이 모니터링 가능 개발 생산성 최적화 및 유지보수되는 pre-build connector 시스템 복잡성 증가 보안 문제 가능성 증가 (타 시스템 연동 때문) 제한된 기능 Confluent Platform 소개 Confluent Platform은 여러 소스 ..

개발 일지 2023.05.24

Kafka Schema Registry

개요 - Schema Registry는 Kafka와 별도로 동작하는 프로세스이며, Kafka에서 발생하는 Message에 대한 Schema를 관리하는 역할을 가진다. - RESTful 인터페이스로 동작한다. - Confluent에서 공개한 오픈소스 (Hortonworks, Spring Cloud Stream 도 있음) Confluent Schema Registry 목적 데이터 호환성을 유지 및 관리하기 위해서 개발되었다. producer, consumer가 많을 수 있는 분산 시스템 환경에서, 데이터에 대한 호환성을 유지하기 위함 또한 schema에 대한 관리를 하기 위함. (data governance, 정확성, 신뢰성) 장단점 장점 단점 스키마 변경 시 발생하는 오류 방지: 메시지에 대한 변경이 일어..

개발 일지 2023.05.23

Apache Avro 란

Avro Avro 란 Avro란 Apache에서 만든 프레임워크로 데이터 직렬화 기능을 제공한다. JSON과 비슷한 형식이지만, 스키마가 존재한다. Avro = schema + binary(json value) 장단점 장점 단점 스키마를 통해 데이터 구조 및 타입을 알 수 있다. 데이터 압축 스키마 변경에 유연하게 대응 가능 binary로 serialize 되어서, 디버깅 등 상황에서 데이터 확인에 어려움이 있다. 스키마에 대한 관리가 필요하다 (관리 포인트 증가) DataType Primitive null boolean int long float double bytes string Complex record name (M): name of record, String namespace (O): 패키지, ..

개발 일지 2023.05.22

브라우저와 Redirect (feat. XMLHttpRequest)

XMLHttpRequest란? - All modern browsers have a built-in XMLHttpRequest object to request data from a server. 비동기적 통신을 브라우저에서 제공하기 위한 W3C 표준 스펙이다. 브라우저에서 제공하는 객체이며, jQuery의 Ajax 또한 XMLHttpRequest를 활용하여 구현되어 있다. Redirect 란? 요청 client에게 Server가 다른 곳으로 다시 요청하기 위한 HTTP Response Status이다. - 301 Moved Permanently: 요청한 리소스의 URI가 변경됨, redirect 시 method가 GET으로 자동 변경 - 302 Found: 요청한 리소스의 URI가 일시적으로 변경됨, re..

개발 일지 2023.05.19

#7 3rd OAuth 연동 (google)

개요 개인 서버의 인증 시스템과 타 인증시스템의 Integration에 대한 설계를 진행해 보았다. OAuth2.0 시스템은 타 인증 시스템에 연동할 수 있는 스펙을 가지고 있기 때문에 비교적 수월한 설계가 가능했다. 인증/인가 정책 인증 시스템의 기본 정책에 대한 결정이 필요했다. 1. 인증은 무엇을 기준으로 할 것인가? 2. 인가는 무엇을 기준으로 할 것인가? 결정 사항 1. 인증은 내 서버의 계정을 기준으로 한다. - 무조건 내 서버 계정으로 발급받은 토큰으로 인증을 수행한다. 2. 외부인증은 내 서버의 계정에 1:다 매핑하며, 인증된 내 서버 계정의 부가정보로 정의한다. 3. 인가는 내 서버 계정이 발급받은 토큰의 scope를 기준으로 한다. 4. 토큰 업그레이드를 통해 토큰의 인가를 관리할 수 ..

#6 Webflux기반 OAuth2서버 + gateway 구축

개요 서비스를 위해서 서버에 접근제어를 위한 인증서버가 필요했다. 개인적으로 정리한 요구사항: - 개인 서버의 계정을 기반으로 인증을 수행할 수 있어야 한다. - 내부적인 서비스 호출에 인가를 받을 수 있는 구조여야 한다. - OAuth2.0 최소 스펙 이상 동작할 수 있어야 한다. - 추후 외부 OAuth 프로토콜과 연계 될 수 있는 구조여야 한다. Gateway OAuth 2.0 서버 개요 Server Architecture 전체적인 서버구성에 추가적인 요소들이 있다. 1. Nginx의 추가 - WebServer의 역할을 하며, 개인 서버의 유일한 Entry Point - URL Prefix를 통해서 각 서버로 연동을 해준다. - Web Resource (static page)에 대한 제공을 한다...

반응형