현재 개발 중인 뉴스 모니터링 서비스는 다음과 같은 작업을 수행한다.뉴스 기사 수집 및 저장AI 서버를 통한 기사 요약과 우선순위 분석홍보처용 메일 생성 및 발송매일 정해진 시간에 실행되는 스케줄러 작업기사 조회와 편집을 위한 FastAPI API 제공기존에는 하나의
결제 시스템의 안정성을 높이기 위해 지금까지 다음 기능을 구현했다.멱등성 키 기반 중복 결제 방지비관적 락 기반 동시성 제어결제 상태 머신블록체인 거래 대사대사 모니터링 API대사 실패 알림과 자동 재시도Transactional Outbox실제 MySQL 기반 통합 테
결제 시스템에 멱등성, DB 락, 상태 머신, 대사 배치를 구현했다고 해서 곧바로 안전하다고 말할 수 있을까?코드만 보면 올바르게 동작하는 것처럼 보여도 실제 데이터베이스에서는 예상과 다르게 동작할 수 있다.특히 다음 기능은 단위 테스트만으로 충분히 검증하기 어렵다.비
이전 작업에서는 서버의 결제 기록과 블록체인 거래 내역을 비교하는 결제 대사 기능을 구현했다.하지만 대사 기능이 자동으로 실행된다는 것만으로는 운영 환경에서 충분하지 않았다.예를 들어 다음과 같은 질문에 답할 방법이 필요했다.현재 대기 중인 대사는 몇 건인가?결제 기록
앞선 작업에서는 결제 시스템에 다음 기능을 적용했다.멱등성 키를 이용한 중복 결제 방지비관적 락을 이용한 잔액 동시성 제어결제 상태 머신과 실패 단계 기록하지만 이런 기능을 적용해도 내부 결제 기록과 블록체인의 실제 거래 결과가 항상 일치한다고 단정할 수는 없다.예를
이전 결제 로직은 결제 결과를 다음과 같이 단순하게 관리하고 있었다.이 구조는 결제가 성공했는지 실패했는지는 알려주지만, 결제가 어떤 단계를 거쳤고 어느 단계에서 실패했는지는 표현하기 어렵다.블록체인 결제를 예로 들면 실제 처리 과정에는 여러 단계가 존재한다.그런데 모
앞선 작업에서는 멱등성 키를 적용해 동일한 결제 요청이 반복 실행되는 문제를 방지했다.하지만 멱등성만으로 모든 동시성 문제가 해결되는 것은 아니다.예를 들어 한 사용자의 지갑 잔액이 100일 때 서로 다른 80원짜리 결제 두 건이 동시에 들어올 수 있다.결제 A와 B는
결제 API를 개발하다 보면 “결제 요청 한 번에 결제도 정확히 한 번만 실행된다”고 생각하기 쉽다.하지만 실제 서비스에서는 동일한 결제 요청이 여러 번 전달될 수 있다.사용자가 결제 버튼을 연속으로 클릭한 경우서버 응답이 늦어 프론트엔드가 요청을 다시 보낸 경우모바일
들어가며 기사 데이터가 적을 때는 대부분의 쿼리가 빠르게 작동한다. 하지만 기사 수가 수십만 건 이상으로 증가하면, 검색과 목록 조회 같은 기본 기능도 점점 느려질 수 있다. 이번 글에서는 데이터 증가와 운영 환경을 고려하여 다음 항목을 개선했다. 기사 검색을 위한 trigram 인덱스 추가 최신 중요도 조회 쿼리 단순화 COUNT 결과 캐...
Redis를 도입한 이유 뉴스 모니터링 서비스의 통계 API는 기사 수, 언론사별 기사 수, 중요도별 기사 수와 같은 데이터를 제공한다. 이러한 통계 값은 요청할 때마다 크게 달라지지 않지만, 기존 구조에서는 사용자가 통계 페이지를 열 때마다 데이터베이스에서 집계
들어가며 FastAPI로 뉴스 모니터링 서비스를 개발하면서, 기능은 정상적으로 작동하지만 기사 수가 많아질수록 처리 속도가 느려질 수 있는 부분들을 발견했다. 이번 글에서는 다음 성능 문제를 개선한 과정을 정리한다. 기사 본문을 불필요하게 다시 크롤링하는 문제 외부 API 요청마다 새로운 HTTP 연결을 만드는 문제 기사 분석 결과 저장 과...

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

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

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

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

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

목차 EC2 생성 RDS 생성 Dockerfile 작성 github secrets에 환경변수 선언 github-actions.yml 코드 작성 application.yml코드 작성 💻 코드 설명 spring.application name Spring
IntelliJ IDEA에서 Run 버튼을 누르면, Spring Boot 애플리케이션(또는 다른 프로젝트)이 실행되기까지 여러 단계가 순차적으로 실행됩니다. 아래는 IntelliJ IDEA에서 Run 버튼의 동작 과정을 설명합니다.IntelliJ IDEA의 Run Co

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