| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 |
- aop
- Grafana
- restful
- log
- SSL
- 서버
- postgresql
- 마이그레이션
- AWS
- CRUD
- 프리티어
- springboot
- EC2 인스턴스 생성
- API
- 인증
- REST
- RDS
- Prometheus
- ec2 rds 연결
- spring
- 백업
- CD
- nginx
- RDS생성
- 자동 배포
- 복구
- REST API 설계
- HTTP 상태 코드
- DDos
- EC2
- Today
- Total
목록분류 전체보기 (39)
SU_DING_GI
😓 이상하게 느려진다?알록(ALOC) 서버를 운영하면서 문득 이런 생각이 들었다.“지금 API가 느린 건가?”“뭐가 문제지? 어디를 먼저 개선해야 하지?”하지만 당시 상황은 이랬다:요청이 느려도 로그만 보면 느린 건지 알 수 없음예외는 로그로 찍히지만, 평균 응답 시간은 안 나옴성능 개선을 하고 싶어도 "어디부터?"가 막막했다💡 그래서 시작했다: AOP 기반 로깅 시스템이런 고민 끝에 나온 해결책은 명확했다.“성능 병목을 알고 싶으면, 먼저 전체 흐름을 로깅하자.”단순히 로그를 찍는 수준이 아니라:모든 컨트롤러 API 요청의 시작과 끝을 로깅파라미터 값과 실행 시간을 수집500ms 이상 지연된 요청은 디스코드 알림Prometheus로 수집하고, Grafana로 시각화까지 통합적인 관측 시스템을 만들기..
EC2 서버 장애 분석 및 대응 기록최근, 알록 서버에 Grafana와 Prometheus를 활용한 모니터링 시스템을 적용해보고 있었다. 그리고 서버의 CPU 사용량, 메모리 사용량이 많아지거나 Spring 서버에서 500 에러가 발생하면, 디스코드 웹훅으로 알람을 받도록 설정했다.그런데 어느 순간부터...이 알림이 계속 뜨더니 알람이 resolve되지 않고 서버 도커 컨테이너(Spring 애플리케이션)가 exited 상태로 떨어지는 사건이 발생했다.처음 생각한 원인처음에는 그냥 "EC2 프리티어 스펙이 낮아서 그런가?" 하고 단순하게 넘겼다. 그래서 컨테이너를 재시작했는데, 두 번째 반복될 때 느낌이 이상했다."이거 진짜 문제가 있는 거 같은데? 제대로 원인 파악해보자."바로 원인 분석을 시작했다.1...
2025.02.06 - [INFRA] - [AWS] 기존 서버에서 새로운 서버로 마이그레이션 하기 - 2. EC2 인스턴스 생성하기 [AWS] 기존 서버에서 새로운 서버로 마이그레이션 하기 - 2. EC2 인스턴스 생성하기2025.02.04 - [INFRA] - [AWS] 기존 서버에서 새로운 서버로 마이그레이션 하기 - 1. RDS 생성 및 백업 [AWS] 기존 서버에서 새로운 서버로 마이그레이션 하기 - 1. RDS 생성 및 백업기존에 운영하던 알고리즘sua-su-ding-gi.tistory.com이전 글에서 EC2와 RDS 연결까지 완료했었다. 원래 우리는 깃 action을 통해 CI/CD를 구현해놨지만 내가 그 설정을 담당하지 않았어서.. 처음 부터 다시 공부하면서 EC2 서버에 배포할 수 있도록..
2025.02.04 - [INFRA] - [AWS] 기존 서버에서 새로운 서버로 마이그레이션 하기 - 1. RDS 생성 및 백업 [AWS] 기존 서버에서 새로운 서버로 마이그레이션 하기 - 1. RDS 생성 및 백업기존에 운영하던 알고리즘 웹사이트 Aloc은 개인 계정으로 운용하고 있어서 비용 문제가 발생하기 시작했기에 잠시 중단했다가, 공동 계정으로 서버를 옮기게 되면서 과정을 기록하면 좋겠다~sua-su-ding-gi.tistory.com이전에 RDS에 DB 백업 복구를 완료하였으니 이제는 EC2 인스턴스를 생성해서 새로운 서버를 만들어보겠다!1. EC2 인스턴스 생성하기인스턴스 시작 버튼을 누르고ubuntu 서버가 익숙하기 때문에 ubuntu를 선택해줬다프리티어를 사용할 것이기 때문에 t2.micr..
기존에 운영하던 알고리즘 웹사이트 Aloc은 개인 계정으로 운용하고 있어서 비용 문제가 발생하기 시작했기에 잠시 중단했다가, 공동 계정으로 서버를 옮기게 되면서 과정을 기록하면 좋겠다~ 싶어서1. RDS 복구하기2. EC2 인스턴스 생성하기3. 기존 CI/CD 코드에 변경 사항 적용해서 서버 키기로 단계별로 구현해보려한다!1. RDS 생성하기DB 백업 파일을 스냅샷으로 받은게 아니라서 일단은! RDS 인스턴스부터 생성해보겠다RDS에 들어가서 새로운 데이터베이스를 생성해주고,기존에 PostgreSQL을 사용했어서 PostgreSQL 엔진을 선택해줬다템플릿은 프리티어를 선택하여 추가로 내는 비용 없이 사용할 수 있도록 하는데, 이때 추후 엔진 버전을 활용해 파라미터 그룹을 만들어야하기 때문에 엔진 버전을 기..
API💡 API란 Application Programming Interface의 약자로 프로그램을 실행하는 인터페이스이다API를 통해 프로그램에 요청을 전달하기 위한 통로 혹은 방법이다.라이브러리를 설치하고 호출하는 함수도 API이다. REST API💡 REST는 REpresentational State Transfer라는 용어의 약자로 HTTP method별로 역할 명시한 APIREST API 디자인 가이드URL은 정보의 자원을 표현해야 한다.정보의 자원 이름은 동사보다 명사를 사용한다./members/1자원의 대한 행위는 HTTP Method(GET, POST, PUT, DELETE 등)로 표현GET /members/1URL 설계 시 주의할 점슬래시 구분자(/)는 계층 관계를 나타내는 데 사용한다..
문제 N-Queen 문제는 크기가 N × N인 체스판 위에 퀸 N개를 서로 공격할 수 없게 놓는 문제이다. N이 주어졌을 때, 퀸을 놓는 방법의 수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 N이 주어진다. (1 ≤ N < 15) 출력 첫째 줄에 퀸 N개를 서로 공격할 수 없게 놓는 경우의 수를 출력한다. 예제 입력 1 8 예제 출력 1 92 풀이 n-queen은 사이서울에서 한번 구현한 적이 있어서 이미 알고 있는 문제였다 그때는 2차원배열로 구현했어서 이번에는 인덱스를 이용해서 일차원 배열을 활용하여 n-queen을 구하려고했다. 그런데 자꾸 시간초과가 나서.. pypy로 했더니 시간초과가 나지 않는다.. 흠 어떤게 문제인지 모르겠으나 추후에 시간이 날때 pypy랑 python3의 차이를 알아..
문제 수빈이는 TV를 보고 있다. 수빈이는 채널을 돌리려고 했지만, 버튼을 너무 세게 누르는 바람에, 일부 숫자 버튼이 고장났다. 리모컨에는 버튼이 0부터 9까지 숫자, +와 -가 있다. +를 누르면 현재 보고있는 채널에서 +1된 채널로 이동하고, -를 누르면 -1된 채널로 이동한다. 채널 0에서 -를 누른 경우에는 채널이 변하지 않고, 채널은 무한대 만큼 있다. 수빈이가 지금 이동하려고 하는 채널은 N이다. 어떤 버튼이 고장났는지 주어졌을 때, 채널 N으로 이동하기 위해서 버튼을 최소 몇 번 눌러야하는지 구하는 프로그램을 작성하시오. 수빈이가 지금 보고 있는 채널은 100번이다. 입력 첫째 줄에 수빈이가 이동하려고 하는 채널 N (0 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 고장난 버튼의 개..