본문 바로가기

전체 글

(12)
AWS Summit Seoul 2025. 참석 후기 요약 1. 계기 본래 컨퍼런스를 보는 것을 좋아해 자주 찾아 보거나 방문하였는데최근 취업 준비로 인해 참석을 많이 하지 못했어요게다가 연이은 대기업 면접 탈락에 의욕이 많이 떨어져 있던 차에리프레시가 필요하다고 생각했어요 😭 그러던 도중 AWS 컨퍼런스 일정을 보게 되었고,밑져야 본전이라는 마음에 신청했는데 덜컥 당첨이 돼버렸어요 😯국내에서 가장 큰 규모의 행사이기도 해서 들뜬 마음에 참여를 하게 되었답니다 😊 2. 참석 가이드 및 참석 세션 이번 컨퍼런스의 전체적인 내용은 AWS 클라우드와 AI에 집중되어 있었어요서버 백엔드 개발을 지망하는 저에게 있어서는 조금 아쉬웠어요 🥲그래도 얻어갈 수 있는 부분들을 최대한 얻어가자는 느낌으로 트렌드와 데이터 처리 위주로 세션을 참석하게 되었습니다하늘색으로..
OS-Simulator: 운영 체제 시뮬레이터 기획 (1) 1. 계기 Spring을 사용하면서도, Spring 내부 기능을 많이 사용해볼 수 있는 프로젝트에 대해 고민을 하게 되었어요비교적 기능 구현 위주이며, 별도의 DevOps 인프라 관리를 하지 않아도 되는 프로젝트그러면서도 도전적인 과제가 나올 법한 프로젝트가 뭐가 있을까?이와 같은 고민을 하다 보니, OS-Simulator는 OS에 대한 복기도 할 수 있으며 도전적인 과제가 될 수 있을 것 같았습니다그래서 이 프로젝트를 시작하게 되었어요 😊(그리고 학부생 때 가장 좋아했던 과목이 OS이기도 했더래요 😅) 2. 설계 전체적인 아키텍처는 Monolithic으로 구성하며, 별도의 DB를 두지 않는 Memory 기반의 프로젝트로 기획했어요 👀목적 자체가 서비스보다는 구현 자체에 있고, Infra 설계에 많..
백준: 1106. 호텔 (C++) 1. 문제 정보https://www.acmicpc.net/problem/1106Gold IV다이나믹 프로그래밍 2. 문제 풀이 전형적인 배낭 문제 유형이에요 !하지만 이번 문제를 풀면서 풀이 과정을 개선한 점, 그리고 새롭게 배운 점이 있어 정리해볼까 해요 🥰 2차원 배열 풀이원래 저는 배낭 문제를 풀 때 2차원 배열 형태로 풀어왔었어요첫 번째 예시를 예로 들어봅시다먼저 DP 배열은 DP[1001][100001]로 작성해줬어요N이 1000보다 작거나 같고, 각 도시에서 낼 수 있는 비용이 최대 100이므로C = 1000일 때 필요한 최대 비용은 100 * 1000이 됩니다이에 맞춰 예제 입력 1번에 대한 풀이를 해볼게요초기에는 이와 같은 2차원  배열로 시작합니다1번 도시의 경우, 3의 홍보 비용으로 ..
백준: 15708. 미네크래프트 (C++) 1. 문제 정보https://www.acmicpc.net/problem/15708Platinum V그리디 2. 문제 풀이 이번 문제도 역시 쉽진 않았어요처음에 풀이가 생각이 나지 않아 아래 쪽의 알고리즘 분류를 확인하고 감을 잡아 풀었습니다 🥲우선순위 큐를 활용한 문제였어요  T = 20, P = 1이라는 조건으로 위의 예시를 볼게요한 칸 한 칸 옆으로 이동해주며 사용 가능한 총 시간을 계산합니다위의 예시의 경우 p가 1이므로 한 칸 이동할 때 마다 1씩 감소하게 되겠지요 😀최대 힙을 이용해 우선순위 큐를 구성하고 미네랄의 위치에서 사용 가능 시간과 미네랄을 비교해 추가가 가능하면 큐에 넣어줍니다큐의 TOP과 미네랄을 비교했을 때, TOP이 현재 미네랄보다 크다면 제거해줍니다차례대로 한 번 살펴볼게요..
백준: 17420. 깊콘이 넘쳐흘러 (C++) 1. 문제 정보https://www.acmicpc.net/problem/17420Platinum V그리디 2. 문제 풀이 처음 문제 풀이 시 부터 풀이가 쉽게 보이는 편이라고 생각하고 막힘 없이 풀기 시작했었어요하지만 그렇게 호락호락할 리가 없죠 🥲제대로 처리하지 못한 코너 케이스들에서 막히게 되었어요 😭그래서 ! 우리는 해당 케이스 분석으로 먼저 들어가보려 합니다 439 8 10 040 60 60 90AC: 10  이 케이스를 먼저 확인해 볼 건데요 이 문제 풀이의 핵심은 정렬에 있습니다문제의 조건을 보면 아래와 같습니다 기프티콘의 연장 횟수 최소화기프티콘의 기한이 가장 짧은 것 먼저 사용기프티콘의 사용 날짜는 정해져 있음기프티콘은 하루에 동시에 여러 장 연장 또는 사용할 수 있음이를 봤을 때, 기..
백준: 1109. 섬 (C++) 1. 문제 정보https://www.acmicpc.net/problem/1109Platinum IV그래프 2. 문제 풀이 문제를 처음 봤을 때, 트리의 높이 문제라고 생각은 했으나 어떻게 트리를 구현해야 할 지 감이 잘 오지 않았어요 🥲 트리로 구현하려고 할 때 처음부터 한 번에 트리로 구현하려고 하니 많이 막혔던 것 같아요트리로 구현하지 않아도 풀 수 있는 방법도 있었구요 ! (지인이 이렇게 풀었더라구요 👀) 각각의 풀이 방법을 설명드릴게요 트리 구현 풀이법 (BFS 3회, DFS 1회)트리를 직접 구현해서 푸는 방식입니다# https://www.acmicpc.net/board/view/8509913 17xxxxxxxxxxxxxxxxxx...............xx.xxx.x...xxxxx.xx...
Spring: 다중 DB 연결 이슈와 아키텍처 설계 1. 배경Master/Slave로 이중화된 DB에 Spring 서버에서 연결을 해야 하는 상태Patroni로 이루어진 Cluster는 Etcd를 통해 Failover가 이루어질 수 있어 Master와 Slave는 고정되지 않음Spring 서버에서 API 호출 시 성격에 따라 적절한 노드로 가도록 조치가 필요 2. 해결 시도 과정 및 문제 상황Spring Scheduler + Redis를 통한 주기적 캐싱 (1)- 30초 간격으로 Spring Scheduler를 호출해 Patroni API를 호출하여 Master와 Slave 노드의 주소를 획득- 획득한 주소를 Redis에 저장하여 API 호출 시 캐싱된 데이터를 빠르게 가져올 수 있도록 함- 30초 사이에 Failover가 일어나 변경되었을 때를 고려해 ..
Patroni: Docker + Patroni + Etcd 클러스터 구성 트러블슈팅 1. 배경기획 요구사항 스펙 상 태그로 검색하는 기능이 많은 서비스를 개발해야 하는 상태태그는 여러 개를 가질 수 있지만, 이는 1NF에 부합하지 않음태그를 별도의 테이블로 만들고 매핑하는 것은 비효율적이라고 판단검색 최적화를 위해 Elastic Search를 도입하는 방법도 있지만 이는 현재 시점에서 오버엔지니어링이라 판단하나의 컬럼에 Array 형태를 저장할 수 있는 PostgreSQL을 도입하기로 결정추후 확장성을 미리 고려해 초기 단계에서 DB 이중화를 1:1로 진행Leader-Election, Failover 등의 자동화를 위해 Patroni 도입을 고려 2. 문제 상황컨테이너 설정 적용 문제 - Etcd(bitnami/etcd:latest)- Patroni 컨테이너에서 patronictl s..