본문 바로가기

728x90

전체 글

(41)
SES 장애 내구성을 위한 이메일 재전송 설계: 폴링 스케줄러와 deadline 기반 재전송 정책 서론서비스 소개RecycleStudy 서비스는 복습하고 싶은 URL 링크를 저장하면 주기적으로 복습 내용을 이메일로 전송해주는 서비스입니다.사용자가 직접 복습 주기를 커스텀하여 원하는 주기와 시간대에 이메일을 받을 수 있는 기능을 제공하고 있습니다.재전송 기능 설계를 시작한 배경이메일 전송 서비스는 RecycleStudy 측에서 직접 컨트롤할 수 없는 외부 인프라입니다.외부 인프라에서 문제가 발생하면 RecycleStudy의 서비스 가치인 "사용자가 원하는 시간에 맞춰 알려주는 것"을 달성할 수 없습니다.이에 따라 "외부 인프라에 문제가 생겨도 서비스 가치를 보존할 수 있는 방법은 무엇일까?"하는 고민에서 시작하였습니다.재전송 기능의 핵심 구조재전송 기능은 notification_history 테이블을 ..
이메일 스케줄러 성능 테스트: 병목 식별부터 Virtual Thread 적용까지 서론서비스 소개RecycleStudy 서비스는 복습하고 싶은 URL 링크를 저장하면 주기적으로 복습 내용을 이메일로 전송해주는 서비스입니다. 사용자가 직접 복습 주기를 커스텀하여 원하는 주기와 시간대에 이메일을 받을 수 있는 기능을 제공하고 있습니다.성능 테스트를 시작한 배경성능 테스트는 서비스를 운영하면서 "현재 구조로는 어느 정도의 트래픽을 수용할 수 있을까?"하는 고민에서 시작하였습니다. 현재 상황을 정확하게 파악해야 문제가 될 수 있는 지점을 빠르게 식별하고 가장 적합한 해결 방안을 도출할 수 있기 때문입니다.1. 목표 정의성능 테스트의 모호한 목표를 명확하게 만들기 위해 목표를 아래와 같이 재정의하였습니다.현재 아키텍처의 병목 지점을 측정하여 식별하고 측정 근거를 바탕으로 개선한다. 성능 테스트..
Windows에서 Spring 8080 포트 'Address already in use’ 문제 해결 방법 개요Spring Boot로 개발 시 Tomcat 기본 포트인 8080을 사용하려 할 때, "Address already in use"이라는 오류가 간헐적으로 발생했습니다.Error starting ApplicationContext. To display the condition evaluation report re-run your application with 'debug' enabled.2025-11-14T00:33:11.968+09:00 ERROR 28564 --- [gacha-auction] [ main] o.s.b.d.LoggingFailureAnalysisReporter :***************************APPLICATION FAILED TO START****..
AtCoder Beginner Contest 418 후기 시작하며...한동안 우테코 미션과 프로젝트를 진행하면서 AtCoder 참가를 잘 못하고 있었다. 그러다가 이번에 프로젝트도 어느정도 궤도에 올랐다고 생각이 들어 오랜만에 ABC 참가 신청을 했다.회고A - I'm a teapot: 2회 시도 & 성공문자열 길이와 문자열을 받고 postfix로 tea가 있으면 Yes를, 없다면 No를 출력하는 간단한 문제이다. 아쉽게 1번 틀렸는데 최근 알고리즘 연습은 취업 코딩 테스트 대비를 위해 Python은 잠시 손을 놓고 Java로 진행하다보니 Python에 익숙해지는 시간이 잠깐 필요했었다. 2번째 시도에서는 간단하게 해결했다.문자열 맨 뒤 3글자가 tea인지 여부만 검사하면 끝나는 문제였다.전체 코드n = int(input())s = input()if (n B ..
[우아한테크코스] 7기 최종 합격 회고록 시작하며...이번에 지원한 우아한테크코스 7기(이하 우테코)에 최종 합격했다. 처음 지원할 당시에는 "내가 합격할 수 있을까?"라는 생각이 더 강했었지만 우테코 측에서 좋게 봐준 것 같아 기분이 좋았다. 글솜씨가 부족하지만 이후에 우테코를 지원할 사람에게 도움이 되었으면 좋을 것 같아 회고록을 남긴다. 지원서우테코에 지원서를 작성할 때, 우테코에서 제시한 문항에 대한 답변을 작성해야 한다. 즉, 자기소개서를 작성한다고 볼 수 있을 것이다. 주의할 점으로 다음 기수에는 질문 유형이 변경될 수도 있다. (실제로 이번 7기에 질문 유형이 변경되었다.) 우테코 홈페이지에서 지원하기에 들어가면 우테코에서 요구하는 질문을 확인할 수 있다. 이를 기반으로 미리 생각해 두는 것도 좋은 방법이 될 것이다. 이번 7기에서..
BOJ 1992: DFS와 BFS - 파이썬(Python) https://www.acmicpc.net/problem/1260DFS와 BFS를 구현하여 그래프 순회 결과를 출력하는 문제이다. DFS와 BFS는 각각 무엇인지 알아보자. DFS란 "Depth First Search"의 약자로 "깊이 우선 탐색"이라고도 한다. 해당 알고리즘의 예시를 문제에서 제시한 예시를 이용하여 작동 방식을 살펴보자.아래 그래프는 문제에서 제시한 입력을 기반으로 구성한 그래프 그림이다.  문제에서 제시한 시작 node는 1이므로 1부터 시작하자.다음 node는 어디로 진행해야 할까? 문제에서 여러 node와 연결되어 있다면 값이 작은 node를 우선 진행한다고 하였으므로 2로 진행하면 된다.그다음은 2에서 갈 수 있는 node는 4밖에 없으므로 4로 진행하면 된다.이제 4에서 진행할..
BOJ 1992: 쿼드트리 - 파이썬(Python) https://www.acmicpc.net/problem/19922차원 배열을 문제에서 제시하는 방법을 이용하여 1차원 배열로 압축하는 문제이다. 문제에서 제시한 예시를 살펴보고 규칙을 찾아보자. 1번째 단계는 압축할 수 없다. 왜냐하면 0과 1이 모두 섞여있기 때문이다. 2단계를 진행하기 위해 대상 배열을 4개의 영역으로 분할하자.해당 배열에서 왼쪽 위와 오른쪽 아래는 각각 0, 1로 압축할 수 있고, 나머지는 다시 분할해야 할 것이다. 우선 중간 결과는 아래처럼 나올 것이다.$$(0(????)1)$$ 이제 3단계를 진행해 보자. 2단계에서 완료된 왼쪽 위와 오른쪽 아래를 제외한 나머지 영역에 대해서만 진행하면 충분하다. 진행 완료한 칸은 회색으로 표시하였다. 아래 그림은 각 영역에 대해 분할한 모습이..
BOJ 10830: 행렬 제곱 - 파이썬(Python) https://www.acmicpc.net/problem/10830크기가 $N \times N$인 행렬 $A$의 $B$제곱인 $A^B$를 구하는 문제이다. 단순 곱을 하게 된다면 행렬 곱의 시간복잡도 $O(N^3)$을 B번 진행하게 되므로 $O(n^3 \times B)$가 될 것이다. 이는 제한 시간인 1초 이내로 실행할 수 없는 시간복잡도이다. 그렇다면 어떻게해야 시간복잡도를 줄일 수 있을까? "BOJ 1629: 곱셈" 문제에서 사용했던 "분할 정복"을 적용한 곱셈을 행렬 버전으로 적용하면 될 것 같다고 생각할 수 있을 것이다.  즉, 아래의 식을 이용하면 답을 구할 수 있다.$A^B = A^\frac{B}{2} \times A^\frac{B}{2}$$A^B = A \times A^{floor(\fra..


728x90