profile
노는 게 제일 좋은 뽀로로
태그 목록
전체보기 (82)JPA(12)docker(10)Java(5)Spring boot(4)ONOS(4)mininet(3)결제시스템(3)트랜잭션(3)김영한(3)프록시(2)스프링 부트(2)스프링DB(2)sql(2)스프링부트(2)동시성(2)nextLine()(1)static(1)즉시로딩(1)dockerfile(1)자바서블릿(1)페이징(1)jar(1)상태 머신(1)RESTfulAPI(1)IntelliJ(1)익명 클래스(1)제네릭 타입(1)1929(1)practice(1)연관관계매핑(1)백엔드(1)final(1)record(1)객체지향원칙(1)SRP(1)리스코프 치환(1)ORM(1)고아객체(1)DIP(1)framework(1)Primitive Type(1)SpringJpa(1)ISP(1)개발(1)DAO(1)iterator(1)SDN(1)오류 해결(1)redis(1)reconciliation(1)HTTP상태코드(1)java기본예외(1)isolation level(1)프론트엔드(1)Scanner(1)Springboot(1)구름톤(1)influxDB(1)구름유티브오티(1)오픈소스sw(1)N+1문제(1)SOLID(1)트랜잭션 매니저(1)cursor(1)pagination(1)VLAN(1)싱글턴(1)구름유니브(1)implements(1)객체지향설계(1)method(1)연관관계 매핑(1)JRE(1)offset(1)Reference Type(1)Generic(1)CI/CD(1)실행(1)JWT(1)next(1)var(1)soft delete(1)트랜잭션 동기화(1)ocp(1)컨테이너(1)멱등성(1)aop(1)foreach(1)타입추론(1)github actions(1)java예외(1)blockchain(1)의존관계 역전(1)war(1)System.in(1)open vswitch(1)데이터베이스(1)원시자료형(1)임베디드 값 타입(1)커넥션 풀(1)cascade(1)일대다(1)다대일(1)일대일(1)다대다(1)참조자료형(1)소수(1)LSP(1)트랜잭션 추상화(1)라즈베리파이3(1)JVM(1)batch(1)비관적락(1)JUnit5(1)트랜잭션ACID(1)트랜잭션 AOP(1)cpp(1)celery(1)개방-폐쇄(1)엔티티 매핑(1)블록체인(1)extends(1)db(1)백준(1)인터페이스 분리(1)자바(1)docker컨테이너(1)Grafana(1)자료형(1)상속관계 매핑(1)ovs(1)메소드(1)지연로딩(1)JPQL(1)영속성 컨텍스트(1)jdk(1)단일책임(1)IntelliJ IDEA(1)Spring(1)스프링(1)트랜잭션 템플릿(1)플러시(1)run(1)DTO(1)

FastAPI 뉴스 모니터링 서버에 Kubernetes 적용하기: 3중화, HPA, 스케줄러 분리까지

현재 개발 중인 뉴스 모니터링 서비스는 다음과 같은 작업을 수행한다.뉴스 기사 수집 및 저장AI 서버를 통한 기사 요약과 우선순위 분석홍보처용 메일 생성 및 발송매일 정해진 시간에 실행되는 스케줄러 작업기사 조회와 편집을 위한 FastAPI API 제공기존에는 하나의

어제
·
0개의 댓글
·

결제 안정성 테스트를 자동화하기: GitHub Actions와 Testcontainers로 CI 구축하기

결제 시스템의 안정성을 높이기 위해 지금까지 다음 기능을 구현했다.멱등성 키 기반 중복 결제 방지비관적 락 기반 동시성 제어결제 상태 머신블록체인 거래 대사대사 모니터링 API대사 실패 알림과 자동 재시도Transactional Outbox실제 MySQL 기반 통합 테

2026년 8월 2일
·
0개의 댓글
·

결제 로직을 어떻게 믿을 수 있을까? Testcontainers로 동시성과 트랜잭션 검증하기

결제 시스템에 멱등성, DB 락, 상태 머신, 대사 배치를 구현했다고 해서 곧바로 안전하다고 말할 수 있을까?코드만 보면 올바르게 동작하는 것처럼 보여도 실제 데이터베이스에서는 예상과 다르게 동작할 수 있다.특히 다음 기능은 단위 테스트만으로 충분히 검증하기 어렵다.비

2026년 8월 2일
·
0개의 댓글
·

결제 대사 결과를 어떻게 운영할까? 모니터링 API와 수동 재처리 기능 구현

이전 작업에서는 서버의 결제 기록과 블록체인 거래 내역을 비교하는 결제 대사 기능을 구현했다.하지만 대사 기능이 자동으로 실행된다는 것만으로는 운영 환경에서 충분하지 않았다.예를 들어 다음과 같은 질문에 답할 방법이 필요했다.현재 대기 중인 대사는 몇 건인가?결제 기록

2026년 8월 2일
·
0개의 댓글
·

PaymentLog와 블록체인 거래를 비교하는 결제 대사 배치 구현하기

앞선 작업에서는 결제 시스템에 다음 기능을 적용했다.멱등성 키를 이용한 중복 결제 방지비관적 락을 이용한 잔액 동시성 제어결제 상태 머신과 실패 단계 기록하지만 이런 기능을 적용해도 내부 결제 기록과 블록체인의 실제 거래 결과가 항상 일치한다고 단정할 수는 없다.예를

2026년 8월 2일
·
0개의 댓글
·

결제 흐름을 상태 머신으로 개선하고 실패 지점 추적하기

이전 결제 로직은 결제 결과를 다음과 같이 단순하게 관리하고 있었다.이 구조는 결제가 성공했는지 실패했는지는 알려주지만, 결제가 어떤 단계를 거쳤고 어느 단계에서 실패했는지는 표현하기 어렵다.블록체인 결제를 예로 들면 실제 처리 과정에는 여러 단계가 존재한다.그런데 모

2026년 7월 30일
·
0개의 댓글
·

동시에 결제해도 잔액이 음수가 되지 않게 만들기: 비관적 락으로 결제 동시성 제어

앞선 작업에서는 멱등성 키를 적용해 동일한 결제 요청이 반복 실행되는 문제를 방지했다.하지만 멱등성만으로 모든 동시성 문제가 해결되는 것은 아니다.예를 들어 한 사용자의 지갑 잔액이 100일 때 서로 다른 80원짜리 결제 두 건이 동시에 들어올 수 있다.결제 A와 B는

2026년 7월 30일
·
0개의 댓글
·

결제 API에 멱등성 키를 적용해 중복 결제 방지하기

결제 API를 개발하다 보면 “결제 요청 한 번에 결제도 정확히 한 번만 실행된다”고 생각하기 쉽다.하지만 실제 서비스에서는 동일한 결제 요청이 여러 번 전달될 수 있다.사용자가 결제 버튼을 연속으로 클릭한 경우서버 응답이 늦어 프론트엔드가 요청을 다시 보낸 경우모바일

2026년 7월 30일
·
0개의 댓글
·

FastAPI 성능 개선하기: 대용량 뉴스 서비스를 위한 검색, 페이지네이션, Celery 성능 개선

들어가며 기사 데이터가 적을 때는 대부분의 쿼리가 빠르게 작동한다. 하지만 기사 수가 수십만 건 이상으로 증가하면, 검색과 목록 조회 같은 기본 기능도 점점 느려질 수 있다. 이번 글에서는 데이터 증가와 운영 환경을 고려하여 다음 항목을 개선했다. 기사 검색을 위한 trigram 인덱스 추가 최신 중요도 조회 쿼리 단순화 COUNT 결과 캐...

2026년 6월 12일
·
0개의 댓글
·

FastAPI 성능 개선하기: Redis 캐시로 반복되는 통계 쿼리 줄이기

Redis를 도입한 이유 뉴스 모니터링 서비스의 통계 API는 기사 수, 언론사별 기사 수, 중요도별 기사 수와 같은 데이터를 제공한다. 이러한 통계 값은 요청할 때마다 크게 달라지지 않지만, 기존 구조에서는 사용자가 통계 페이지를 열 때마다 데이터베이스에서 집계

2026년 6월 12일
·
0개의 댓글
·

FastAPI 성능 개선하기: 중복 요청, N+1 쿼리, 이벤트 루프 문제 해결

들어가며 FastAPI로 뉴스 모니터링 서비스를 개발하면서, 기능은 정상적으로 작동하지만 기사 수가 많아질수록 처리 속도가 느려질 수 있는 부분들을 발견했다. 이번 글에서는 다음 성능 문제를 개선한 과정을 정리한다. 기사 본문을 불필요하게 다시 크롤링하는 문제 외부 API 요청마다 새로운 HTTP 연결을 만드는 문제 기사 분석 결과 저장 과...

2026년 6월 12일
·
0개의 댓글
·
post-thumbnail

ONOS Project Retrospective

In June 2024, I joined the Lee Jae-hoon professor's Network Research Lab at Dongguk University, focusing on AI-enabled networking technologies.As part

2025년 4월 27일
·
0개의 댓글
·

백준 1929번 cpp로 풀기

1929번 문제는 M이상 N이하의 소수를 빠르게 찾고 출력하는 문제이다.이 문제는 에라토스테네스의 체 알고리즘을 이용하여 풀 수 있다.먼저, vector<bool> isPrime(N+1,true)를 생성하여 모든 수를 소수로 가정한다.그리고 2부터 N까지 배수를

2025년 1월 31일
·
0개의 댓글
·
post-thumbnail

[ONOS 실습] 오픈소스 sw 활용해 ONOS로 스위치 포트 별 송수신 트래픽처리량 정보 실시간 그래프로 출력하기

이 포스트는 링크된 블로그를 참고하여 작성되었습니다. -> CLICK!!사진 출처: 네이버 블로그-톨티의 공작소이번에는 위 사진의 순서대로 실습을 진행해볼 것이다. 실습의 편의성을 위해 모든 오픈소스 소프트웨어는 모두 하나의 PC에 설치된다.Mininet으로 가상 네트

2025년 1월 13일
·
0개의 댓글
·
post-thumbnail

[ONOS 실습] 라즈베리파이3에 OVS 설치 후 네트워크 구성해보기/ ONOS로 flow rule 설정하여 VLAN 패킷제어

이 포스트는 아래 링크를 참고하여 작성했다. 라즈베리파이3에 Open vSwitch(OVS) 설치/OVS 네트워크 구성/ONOS로 직접 Flow Rule 설정하여 VLAN 패킷 제어하기 첨부된 링크와 현재 포스트에는 변경된 사항이 있어, 실습을 해보시려면 위의 링크된

2025년 1월 13일
·
0개의 댓글
·
post-thumbnail

[ONOS 실습] ONOS 2.7.0, Ubuntu 22.04이용해 mininet 가상 네트워크 연결

이 포스트는 이 블로그를 참고했습니다! -> click!저 블로그는 ONOS 2.7.0 버전이 아닌 다른 버전을 사용하고 있어 명령어 사용이 달라지는 부분들이 있으니, 최근의 정보를 확인하고 싶다면 제 글을 쭉 따라해보시면 됩니다!window 사용자 기준Ubuntu를

2024년 12월 15일
·
0개의 댓글
·
post-thumbnail

Mininet 사용해보기

SDN관련 실습이 잘 안되어서, 다른 할 것을 찾아보던 중에 mininet을 이용해서 네트워크 환경을 시뮬레이션 하는 것에 대해 알게되었어요!제가 본 블로그는 아래 링크 첨부합니다.CLick!!가상 네트워크를 통해 SDN이나 Openflow와 같은 네트워크 환경을 시뮬

2024년 12월 15일
·
0개의 댓글
·
post-thumbnail

github actions와 docker를 이용한 배포과정

목차 EC2 생성 RDS 생성 Dockerfile 작성 github secrets에 환경변수 선언 github-actions.yml 코드 작성 application.yml코드 작성 💻 코드 설명 spring.application name Spring

2024년 11월 26일
·
0개의 댓글
·

[Spring]Intellij IDEA에서 run버튼을 누르면 일어나는 일들

IntelliJ IDEA에서 Run 버튼을 누르면, Spring Boot 애플리케이션(또는 다른 프로젝트)이 실행되기까지 여러 단계가 순차적으로 실행됩니다. 아래는 IntelliJ IDEA에서 Run 버튼의 동작 과정을 설명합니다.IntelliJ IDEA의 Run Co

2024년 11월 22일
·
0개의 댓글
·
post-thumbnail

스프링의 예외 처리 방법 이해하기(ExceptionHandler, ControllerAdvice 등)

스프링의 예외 처리 방식을 이해하기 위래 먼저 스프링의 전체적 흐름을 이해해야한다.Spring이 요청에 대한 처리를 어떤 흐름으로 진행하는지에 대한 그림이다. 클라이언트의 요청을 디스패처 서블릿이 받음. 요청 정보를 통해 요청을 위임할 컨트롤러 찾음요청을 컨트롤러로 위

2024년 11월 19일
·
0개의 댓글
·