반응형

2024/01 4

Clean Code in Reactive

개요 Reactive 모델은 익숙한 기존 Thread 모델보다 가독성이 떨어지는 이슈가 있다. 이러한 문제는 Reactive의 한계가 아닌, 코드를 작성할 때 가독성을 고려하지 않고 작성하면 발생한다. 이번 리뷰는 가독성 좋은 Reactive 코드를 위한 개념들에 대해 정리한다. 1. 비즈니스 로직은 Operator가 기준이 된다. userService.getFavorites(userId) .map(Favorite::toRequestModel) .flatMap(favoriteService::getDetails) Reactive 모델은 Data Flow가 곧 비즈니스이다. Data Flow는 결국 비즈니스의 “행위”가 되며, 행위는 operator의 묶음으로 표현하게 된다. 이는 결국 추후 Reactive..

개발 일지 2024.01.25

GraphQL Overview

GraphQL 이란 META에서 개발한 Query Language over HTTP. SQL이 Application → DB로 데이터를 쿼리하는 언어라면, GraphQL은 Application → Server로 데이터를 쿼리하는 언어 GraphQL is for… Client ↔︎ Server 간의 Data Provide Mismatch를 해결하기 위해 개발된 언어 No more Overfetching, Underfetching 데이터의 제공 주체는 서버이며, 서버는 다수의 client를 위한 서비스를 제공하기 때문에, 데이터에 기반하여, API를 제공한다. 이에 client는 필요한 Data 이외의 데이터를 함께 제공받거나(overfetching), 필요한 데이터를 모으기 위해 여러번 호출 (underf..

개발 일지 2024.01.15

Netflix OSS란 (feat. Service Mesh)

개요 1. Netflix OSS 및 Spring Cloud Netflic 구성 요소 소개 2. Spring with Netflix에서 제시한 MSA 구조 소개 3. 부록으로 MSA 서비스간의 통신을 infra로 풀어낸 side-car 패턴의 구성방안에 대해 소개 Service Mesh란? Service Mesh는 여러 서비스(MSA등)간의 의사소통을 책임지는 Layer를 말한다. Layer가 어떻게 구성되는지 장단점이 존재하며, 각 솔루션들이 존재한다. 방식 솔루션 설명 PaaS Azure fabric, lagom… 플랫폼 서비스로 mesh구조를 풀어낸 방안 개발자는 Mesh 구성 및 동작에 대해서 신경 쓰지 않는다. Framework 형태로 제공되며, 특화된 코드를 필요로 합니다. Side car Pr..

개발 일지 2024.01.05

Spring Properties from Lib Resources (PropertySourcesPlaceholderConfigurer, EnvironmentPostProcessor)

개요 Spring 프로젝트의 Properties를 구성하는 방법은 여러 가지가 있다. 그중 프로젝트 외부(external jar)의 resources에서 Load 하여 추가하는 방법에 대해 정리하고자 한다. 문제 상황 1. Github Project를 public으로 설정하면 일부 정보들은 노출되지 않도록 관리해야 한다. ex) db password.. etc 2. Multi Project 구조 같이 공통적으로 적용되어야 하는 Properties를 따로 관리해야 할 때 ex) Actuator 설정, 접속정보 등 Properties file을 Runtime에 외부에서 Load 하게 되면 위 문제상황을 해결할 수 있다. 일반적으로는 Server에 관리되는 Properties 파일을 두고 runtime 시점에..

반응형