반응형

전체 글 83

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

#2 Session Connector Server 구현

개요 FlagWar 관련 개발을 한동안 바빠서 소흘했었네요... 이제 슬슬 다시 재개하려 합니다. 이번 구현한 사항은 client와 session을 유지하며, 메시지를 보낼 client를 찾아서 서버 push를 보낼 수 있는 서버입니다. EX) A, B가 X라는 reference로 서버와 session을 유지하고 있을 때, X로 향하는 메시지가 A, B 모두에게 전달될 수 있어야 함 요구사항 요약 1. 서버는 Client와의 Session을 유지할 수 있어야 한다. 2. 서버에 연결된 Client는 자신을 식별할 수 있는 TAG 정보를 서버에 저장 및 삭제할 수 있어야 한다. 3. 서버는 메시지를 수신하여 TAG 기반으로 Client에게 메시지를 전달 할 수 있어야 한다. 4. 서버는 Scale-out이..

API Documentation 정리 (oas,swagger,asyncAPI)

개요 개발 문서 중 API Document를 작성할 방안에 대한 조사 진행 목표는 신뢰성 있으며, 유지보수에 용이한 API 문서 작성이다. Target API 프로토콜로 REST, RSocket, Kafka Message, Websocket Message 이다. 신뢰성: 문서와 실제 구현상의 간극이 최소화 되는 것을 말함 유지보수 용이: Document 작성을 위한 시간을 최소화 하여, 생산성을 높이는 것, 또한 여러 타입의 문서로 재생산 가능한 것도 포함한다. OpenAPI Specification 이란 OAS란 OpenAPI Specification의 약자로 REST API를 json 또는 yaml로 표현하는 방식에 대한 스펙을 의미한다. 2010년대 초 Tam Wordnik이 개발할 당시에는 Swa..

개발 일지 2023.08.02

mysql-connector with mariaDB 버전 호환성 이슈

개요 보안 이슈로 인하여, OS 버전업을 하게되면서, DB 버전을 올리는 일이 발생했다. 기존 코드는 mysql jdbc connector를 사용하여 mariaDB에 붙고 있었고 mariaDB의 버전이 올라가는 상황이다. 버전 업 과정에서 Connection 생성을 못하는 상황이 발생했으며, 해당 이슈 해결과정을 기록으로 남긴다. 변경 사항 전 후 mariaDB version 10.1.25 11.0.2 mysql-connector-java version 8.0.21 8.0.21 이슈 분석 예외 발생 Caused by: java.sql.SQLException: Unknown system variable 'transaction_isolation' at com.mysql.cj.jdbc.exceptions.SQ..

개발 일지 2023.07.26

#1 FlagWar 기획

개요 軍旗(군기)라는 중국 보드 게임이 있습니다. 상대방의 깃발을 뺏는 전략 보드게임으로 상당히 재밌게 했던 기억이 있습니다. 해당 게임을 크로스 플랫폼으로 적절히 번역해서 개발하는것이 목표 요구사항 정리 일반 2인 FlagWar 게임만 구현 기물 세팅 구현 (로컬 캐싱기능만) simple 매칭 시스템 구현 (매칭룰 없음 FIFO) 게임 플레이 관련 구현 게임 resume을 염두한 설계 기능적 확장성 고려 인프라 확장성 및 가용성 고려 반응성 고려 핵심기능만 우선 구현 (추후 기능 추가개발) 게임 룰 정의 보드와 기물 1. 보드 5 X 12 게임판 기물을 배치할 수 있는 위치는 총 60개 이며, 위치는 포인트로 지칭한다. 총 3종류의 포인트가 있다. 기물이 움직이는 경로가 있으며, 경로는 총 2가지 있다..

반응형