전체 글 102

Spring Boot Backend 인프라 & CI/CD 구축 여정 #2 - AWS EC2 서버 생성과 Docker 환경 구축

지난 글에서는 Docker를 이용해 PostgreSQL 데이터베이스를 로컬 환경에서 실행하는 것까지 진행했다. 이번 글에서는 배포를 위해 AWS에서 EC2 인스턴스를 생성하는 과정을 정리해보려고 한다. 우선 학부 시절 캡스톤 프로젝트에서 사용했던 AWS 계정으로는 이미 프리티어 혜택을 사용해서 새로 생성한 계정으로 프리티어 혜택을 받으려 했지만 받을 수 없다고 떴다.그래서 결제 정보를 다른 카드로 변경하여 다시 등록하니 AWS 프리티어 혜택을 적용받을 수 있었다. ㅎㅎ 1. EC2 생성1-1. AMIEC2 인스턴스를 생성할 때 운영체제로 Ubuntu Server 22.04 LTS (HVM), SSD Volume Type을 선택하였다.이 조합은 Spring Boot와 Docker 기반 서버를 운영할 때..

Infra 2026.03.15

Spring Boot Backend 인프라 & CI/CD 구축 여정 #1 - 개발 환경 설계와 로컬 PostgreSQL 구축

이번 프로젝트에서 인프라를 담당하기로 했다. 현재 나는 팀장을 맡고 있고, 지난 프로젝트에서 협업 프로세스를 구축하며 팀원들이 내가 세팅한 환경에서 효율적으로 일하고 있는 모습을 보며 큰 보람을 느꼈다. 그래서 인프라 역시 내가 여태까지 여러 팀플을 하며 느꼈던 좋은 CI/CD 구조를 고민해보고, 팀원들의 작업에 도움이 되었으면 하는 바람에서 담당하게 되었다! 먼저 이번 프로젝트에서 우리 팀이 개발하기로 한 서비스는 어르신을 위한 AI 케어콜 서비스다. 간단하게 설명하자면 케어콜 서비스의 유저는 어르신과 보호자로 나뉘며, 어르신 혼자 이용하거나 어르신과 보호자가 함께 이용할 수 있다. 어르신이나 보호자는 AI 전화 루틴을 생성하여 설정한 시간마다 수신되는 AI 전화를 통해 어르신의 건강, 식사, 복약에 ..

Infra 2026.03.14

[Algorithm/BOJ] 11729 : 하노이 탑 이동 순서.java (재귀)

문제https://www.acmicpc.net/problem/11729 구현가장 무거운 원판을 세 번째 장대로 옮겨야 한다는 점과 N개의 원판을 옮기는 과정이 N-1개의 원판을 옮기는 과정을 포함한다는 점까지는 생각해냈는데 재귀 함수 구현에서 GPT의 도움을 받았다. hanoi 함수 구현static int hanoi(int n, int from, int via, int to) { if (n == 1) { sb.append(from + " " + to + "\\n"); stacks[to].push(stacks[from].pop()); return 1; }} 처음에 n == 1일 경우부터 생각하였다.이 경우에는 첫 번째 장대에 있는 원판을 최종 장대로 옮기면 끝이므로 위와 같이 작성하였다...

[알고리즘] 그래프 (다익스트라 알고리즘, 벨만-포드 알고리즘)

그래프노드와 간선을 이용한 비선형 데이터 구조`노드`: 데이터`간선`: 노드 간의 관계나 흐름`가중치`: 관계나 흐름에서 정도 표현 그래프 종류`방향 그래프`: 방향이 있는 간선을 포함한 그래프`무방향 그래프`: 방향이 없는 간선을 포함한 그래프`가중치 그래프`: 가중치가 있는 그래프`순환 그래프`: 특정 노드에서 시작해 간선을 따라 다시 돌아오는 경로가 있는 순환이 존재하는 그래프`비순환 그래프`: 순환이 존재하지 않는 그래프 그래프 구현(1) 인접 행렬 활용int graph[][] = new int[][]{{0, 400},{0, 0}};희소 그래프 (노드 수에 비해 간선 수가 매우 적은 그래프) 효현하는 경우 비효율노드들의 값의 차이가 매우 큰 그래프 표현하는 경우 비효율간선 정보 확인 시 시간 ..

Algorithm/Concept 2025.11.25

[DB/Oracle] 오라클 데이터베이스 + SQL Developer 설치 (MacBook Air M3)

01. 오라클 데이터베이스 설치하고 계정 설정하기(1) MacBook Air M3 도커에 Oracle 설치참고: https://velog.io/@daram_dev/Mac-오라클-21c-설치하기 Mac 오라클 21c 설치하기노트북을 바꾸면서 맥 환경도 경험해보고 싶어 맥북 에어 M3를 구매했습니다^^하지만 오라클에서 맥을 지원하지 않는다는 점...도커를 이용해서 오라클을 설치해야되는 데아뿔사! image를 pull 땡velog.io설치# 0. docker 설치# 1. colima 설치gaeun@iga-eun-ui-MacBookAir ~ % brew install colima# 2. colima 실행gaeun@iga-eun-ui-MacBookAir ~ % colima start --memory 4 --arc..

DB 2025.11.24

[알고리즘] 트리

01. 개념노드(node): 트리를 구성하는 요소루트 노드: 노드 중 가장 위에 있는 노드부모 노드: 상대적으로 위에 있는 노드자식 노드: 상대적으로 아래에 있는 노드형제 노드: 같은 부모 노드를 갖는 노드리프 노드: 자식이 없는 리프 노드간선(edge): 노드와 노드 사이를 이어주는 선차수(degree): 특정 노드에서 아래로 향하는 간선의 개수 표현배열이나 포인터로 구현 가능(1) 배열로 표현하기배열 = 선형 자료구조, 트리 = 계층 자료구조자식이 없거나 쓰지 않는 인덱스들은 모두 빈 값이므로 메모리가 낭비배열로 트리를 표현하기 위한 3가지 규칙루트 노드는 배열 인덱스 1번에 저장왼쪽 자식 노드의 배열 인덱스는 부모 노드의 배열 인덱스 * 2오른쪽 자식 노드의 배열 인덱스는 부모 노드의 배열 인덱스 ..

Algorithm/Concept 2025.11.24

[Algorithm/프로그래머스] Lv.3 양과 늑대.java (백트래킹)

https://school.programmers.co.kr/learn/courses/30/lessons/92343 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 1. 노드 정의각 노드의 자식을 관리하기 위해 `Node` 클래스를 정의하였다. `id`는 노드 번호이고, `value`는 양(0)과 늑대(1)를 나타내며, `childList`에 자식 노드를 담는다.static class Node { int id; int value; List childList; Node(int id, int value) { this.id = id; this.value = value; ..

[알고리즘] 해시 (Java)

01 . 개념해시는 해시 함수를 사용해서 변환한 값을 인덱스로 삼아 키와 값을 저장해서 빠른 데이터 탐색을 제공하는 자료 구조이다. 해시는 키를 활용해 데이터 탐색을 빠르게 한다.특징단방향 동작: 키 통해 값 찾기만 가능시간 복잡도 O(1): 해시함수 덕분에 탐색 과정 필요 X해시 함수를 활용해서 특정 값이 있는 위치를 바로 찾기 가능해시 테이블: 키와 대응한 값이 저장되어 있는 공간버킷: 해시 테이블의 각 데이터값을 인덱스로 활용하려면 변환과정 필요활용 분야비밀번호 관리데이터베이스 인덱싱블록체인 02. 해시 함수자바에서는 해시셋 혹은 해시맵이라는 표준 API를 제공해시 함수 구현시 고려사항해시 함수가 변환한 값은 인덱스로 활용해야 하므로 해시 테이블의 크기를 넘으면 안 된다.해시 함수가 변환한 값의..

Algorithm/Concept 2025.11.09

[Algorithm/BOJ] 1697 : 숨바꼭질.py

문제수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 때 걷는다면 1초 후에 X-1 또는 X+1로 이동하게 된다. 순간이동을 하는 경우에는 1초 후에 2*X의 위치로 이동하게 된다.수빈이와 동생의 위치가 주어졌을 때, 수빈이가 동생을 찾을 수 있는 가장 빠른 시간이 몇 초 후인지 구하는 프로그램을 작성하시오.입력첫 번째 줄에 수빈이가 있는 위치 N과 동생이 있는 위치 K가 주어진다. N과 K는 정수이다.출력수빈이가 동생을 찾는 가장 빠른 시간을 출력한다.예제 입력 / 출력5 17 4힌트수빈이가 5 → 10 → 9 → 18 → 17 순..

[Algorithm/프로그래머스] Lv.2 타겟넘버.py

문제n개의 음이 아닌 정수들이 있습니다.이 정수들을 순서를 바꾸지 않고 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다.예를 들어, [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 가지 방법이 있습니다.-1 + 1 + 1 + 1 + 1 = 3+1 - 1 + 1 + 1 + 1 = 3+1 + 1 - 1 + 1 + 1 = 3+1 + 1 + 1 - 1 + 1 = 3+1 + 1 + 1 + 1 - 1 = 3사용할 수 있는 숫자가 담긴 배열 numbers, 타겟 넘버 target이 매개변수로 주어질 때,숫자를 적절히 더하고 빼서 타겟 넘버를 만드는 방법의 수를 return 하도록 solution 함수를 작성하세요. 제한사항숫자의 개수: 2개 이상 20개 이하각 숫자: 1 이상 50 이하 자연수타겟 넘버..