반응형

개발 일지 54

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

Jenkins Docker Builder 연동 이슈 (connection refused)

개요 Jenkins는 CI / CD를 구성할 수 있는 강력한 툴이다. Docker는 환경을 포함해서 Application을 이미지화 할 수 있는 툴이며 Jenkins를 통해 docker로 배포하는 방법은 많이 활용되는 조합이다. 문제 발생 기존 배포 방식 일반적인 배포방식으로는 1. Jenkins에서 build 및 docker image 생성 2. docker image를 DockerHub로 업로드 3. 배포 받을 서버에 dockerHub에서 특정 이미지를 받아서 실행하도록 command 이 있다. 배포 방식 단순화 2023 개인서버에는 위 로직을 통해 배포를 진행했었다. 넥스트 계획의 핵심은, 중복되는 작업들을 최대한 자동화 시키고 요구사항에서 벗어나는 확장성을 줄이고자한다. 이에, 서버 한곳에서 빌드..

개발 일지 2023.12.20

Micrometer Log Tracing (feat. Spring Boot 3)

Micrometer란 Vendor-neutral application observability facade micrometer는 observability의 파사드(고수준 인터페이스)를 제공해주는 프로젝트이다. observability는 Application의 가시성을 제공해주는 것을 말하며, 이는 Application 내에서 발생하는 process를 외부로 제공해주는 것 이다. JVM -based Application라면 ventdor에 상관없이 적용할 수 있다. Project Develop History 2016 [Spring] Create tracing library(Spring Cloud Sleuth) from Spring Cloud team 2017 [Micrometer] Micrometer Pr..

개발 일지 2023.12.14

Windows 10 부팅 지연 이슈 (시스템 예약 위치..)

개요 어느 날부터인가 부팅이 수십 초 느려지는 현상이 생겼다. 해결 과정에 대해 정리한다. 추측 1 Boot Disk 우선순위 문제? 느려지는 구간은 구동 후 메인보드 로고가 뜨고, BIOS 설정으로 들어갈 수 있는 로딩화면이었다. 이와 비슷한 현상은 이전에 경험해 봤었는데, 바로 boot disk의 우선순위가 잘못 설정되어 있을 때였다. 정기적으로 윈도우를 포맷하여 사용하기에, 이번에도 그런 이슈 일 것이라 추측했다. 스크린샷은 못 찍었지만 확인한 사항으로는 부팅 우선순위는 윈도우가 설치된 SSD었다. 우선 BIOS를 초기 설정으로 되돌리고, 디스크를 윈도우가 설치된 SSD로 돌려보았다. 하지만, 현상은 동일했다. 추측 2 MainBoard 이슈? 두 번째로 의심한 사항은, 메인보드의 자체적인 이슈이다..

개발 일지 2023.11.14

Spring Webflux Threading (publishOn, subscribeOn) 분석

개요 Reactor에서 제공하는 Pub / Sub 모델은 실행될 Thread를 전략적으로 선택할 수 있게 interface를 제공한다. - publishOn(Scheduler scheduler): 어디에서 Publish 될 것인가 - subscribeOn(Scheduler scheduler): 어디에서 subscribe 할 것인가 Scheduler interface Scheduler extends Disposable { Disposable schedule(Runnable task); Disposable schedule(Runnable task, long initialDelay, TimeUnit delayUnit); Disposable schedulePeriodically(Runnable task, lon..

개발 일지 2023.10.30

Spring Cloud Gateway Code 분석

개요 Spring Cloud Gateway 동작 원리를 code를 통해 분석 Spring Cloud Gateway 동작 원리 Predicates and filters are specific to routes Spring Cloud Gateway의 핵심 아이디어인 “Routing 및 지역적 filter apply” 를 위해 HandlerMapping을 구현해서 추가했다. HandlerMapping은 Filter 이후 Exchange를 처리할 Handler를 찾는 클래스이다. RoutePredicateHandlerMapping으로 구현했으며, 구현된 핵심은 exchange를 기반으로 Route를 찾아서 attribute에 route를 넣는 작업 이후 FilteringWebHandler(webHandler 구..

개발 일지 2023.10.28

Spring Webflux, HttpHandler code 분석

개요 Spring Webflux가 http Request를 받아서 handler를 찾아 mapping, execute 및 response handle하는 과정에 대한 분석을 진행한다. Spring Webflux HttpHandler 분석 HttpHandler Http 요청에 대한 전반적인 처리를 담당하는 interface AutoConfiguration으로 Bean으로 만들어지며, Builder를 통해 생성된다. Builder는 생성된 Bean들을 기반으로 Handler를 생성한다. 따라서 HttpHandler Bean 생성 시점은 매우 늦다 (order = -2147483638) 생성 Flow 요약 1. AutoConfig를 통해 Builder를 생성 (with applicationContext) 2...

개발 일지 2023.10.27

Spring Cloud Sleuth란 - 분산 Tracing

Spring Cloud Sleuth란 Spring Cloud의 분산 트레이싱 솔루션으로 개발 오픈소스 Trace And Span name desc Trace 전체 작업을 하나로 묶는 것 작업 당 64-bit ID 하나를 가진다. Span 분산 시스템에서 세부 작업, 다른 서비스, 다른 머신 또는 다른 쓰레드 등으로 나누어 질 수 있다. 각각 64-bit ID를 가진다. 최초의 Span은 traceId와 동일하며, root span으로 불린다. 분산 시스템의 한 작업의 예이다. 전체 작업을 하나의 Trace로 묶고, 세부 작업을 Span으로 표현한다. 이를 통해 전체 프로세스를 한번에 tracing 할 수 있으며, 세부적인 작업에 대한 부분도 확인 가능하다. 전체 작업을 Span을 기준으로 tree 구조화..

개발 일지 2023.09.11
반응형