전체 글

1. Docker Compose로 Redis, Spring Boot 한 번에 띄울 수 있게 구성하기구성에 필요한 파일 만들기a. Dockerfile17-jdk에서 빌드한 파일을 복사해 실행시키는 Docker 이미지FROM openjdk:17-jdkCOPY build/libs/*SNAPSHOT.jar app.jarENTRYPOINT ["java", "-jar", "/app.jar"] b. compose.ymlDockerfile을 기준으로 서버를 빌드함 (포트는 8080)캐시 서버(Redis)가 정상적으로 실행되고 있다는 걸 확인한 뒤에 백엔드 서버를 띄울 것임 (캐시 서버가 안 띄워져 있으면 오류 표시)services: api-server: build: . ports: - 8080:8..
1. 내가 구성한 백엔드 서버는 1초당 몇 개의 요청을 견딜 수 있을까?부하 테스트의 기본 개념백엔드 서버를 구현하고 나서 배포를 하게 될 경우 요청이 몰려서 서버가 터질까 봐 불안하다거나 내 서버가 어느 정도의 사용자 요청을 견딜 수 있는지 궁금해질 수도 있음이런 불안감을 없애기 위해 서비스를 배포하기 전, 백엔드 서버가 어느 정도의 요청을 견딜 수 있는지 부하 테스트를 해봐야 함 부하 테스트실제 사용자인 척 요청을 막 보내서, 여러 사용자가 한 번에 몰리는 상황을 가정하여 많은 트래픽인 것처럼 서버에 때려보는 것Throughput(처리량)서비스가 1초당 처리할 수 있는 작업량으로, 단위는 TPS(Transaction Per Second, 1초당 처리한 트랜잭션의 수) 우리가 구축한 서비스의 Throu..
EC2, RDS, Spring Boot, Redis를 활용한 아키텍처 구성은 아래와 같다.  1. EC2 생성서울 리전으로 맞추기 & 인스턴스 시작 버튼 클릭 인스턴스 이름 설정 애플리케이션 및 OS 이미지 → Ubuntu (버전 24.04)로 설정 인스턴스 유형은 t3a.small 이상으로 생성할 것을 권장함프리티어인 t2.micro에서 Spring Boot, Redis를 다 돌리기엔 성능이 모자라기 때문에 중간에 EC2가 멈춰버리기도 함 원래는 키페어를 생성해서 셋팅을 해야 하지만, Redis만 연결시켜 보고 테스트 후 바로 종료시킬 것이기 때문에 [키 페어 없이 계속 진행(권장되지 않음)]을 선택서비스를 하는 입장이라면 키 페어를 만드는 걸 추천 네트워크 설정 → 편집 클릭VPC는 기본값 그대로 셋..
· 백준
https://www.acmicpc.net/problem/2023신기한 소수의 예시는 7331이 있을 때, 7331, 733, 73, 7은 모두 소수이다. 이런 수를 모두 신기한 소수라고 할 때, N자리의 숫자 중에서 어떤 수들이 신기한 소수인지 모두 찾는 문제다. 문제 탐색하기- 문제에서 구해야 하는 최종 정답은 무엇인지 탐색한 과정- 그 정답을 구하기 위해 어떻게 코드를 구현해야 할지 고민한 과정- 문제에 들어오는 범위를 파악하며 어떤 알고리즘을 쓸 수 있을지 고민해 가는 과정ex. 가능한 시간 복잡도, 알고리즘 선택입출력 제한1 ≤ N ≤ 8 맨 왼쪽에 있는 수에 숫자를 하나씩 붙여가면서 그 수가 소수이고 N자리라면 출력하면 된다. 맨 왼쪽에 있는 수도 소수여야 하기 때문에 2, 3, 5, 7로 시..
· 백준
https://www.acmicpc.net/problem/1759암호는 서로 다른 L개의 알파벳 소문자들로 구성되며, 최소 한 개의 모음(a, e, i, o, u)과 최소 두 개의 자음으로 구성돼 있다. 암호를 이루는 알파벳은 암호에서 증가하는 순서로 배열돼 있고, 암호에 사용한 문자의 종류는 C가지이다. C개의 문자들이 모두 주어졌을 때, 가능성 있는 암호들을 모두 구하는 문제다. 문제 탐색하기- 문제에서 구해야 하는 최종 정답은 무엇인지 탐색한 과정- 그 정답을 구하기 위해 어떻게 코드를 구현해야 할지 고민한 과정- 문제에 들어오는 범위를 파악하며 어떤 알고리즘을 쓸 수 있을지 고민해 가는 과정ex. 가능한 시간 복잡도, 알고리즘 선택입출력 제한3 ≤ L ≤ C ≤ 15 암호에 사용된 알파벳은 증가하..
· 백준
https://www.acmicpc.net/problem/2580스도쿠는 가로, 세로 각각 9개씩 총 81개의 칸으로 이루어진 정사각형 판에서 이루어지는 게임으로, 게임 시작 전 일부 칸에는 1부터 9까지의 숫자 중 하나가 쓰여 있다. 나머지 빈칸을 채우는 방식은 다음과 같다.각각의 가로줄과 세로줄에는 1부터 9까지의 숫자가 한 번씩만 나타나야 한다.굵은 선으로 구분된 3×3 정사각형 안에도 1부터 9까지의 숫자가 한 번씩만 나타나야 한다.게임 시작 전 스도쿠 판에 쓰여 있는 숫자들의 정보가 주어질 때 모든 빈칸이 채워진 최종 모습을 출력하는 문제다. 문제 탐색하기- 문제에서 구해야 하는 최종 정답은 무엇인지 탐색한 과정- 그 정답을 구하기 위해 어떻게 코드를 구현해야 할지 고민한 과정- 문제에 들어오는..
앞에 이메일 인증 요청과 인증 코드 확인까지 완벽하게 성공한 줄 알았는데, 나중에 로그인 기능을 구현할 때 계속해서 인증이 막혔었다. 분명 코드도 잘 짜놨고 제대로 이해했다고 생각했는데 같은 오류가 반복돼서 멘붕이 왔었던 것 같다. 오류 1BadCredentialException: 자격 증명에 실패하였습니다.로그인에 필요한 기능들을 공부하고 API를 구현했다면 좋았겠지만... 구현 기한이 정해져 있기도 했고 공부할 시간이 부족해서 다른 사람들의 코드를 참고하면서 구현했다. 계속되는 오류에 코드를 갈아엎을까 고민했지만 로그인 구현은 문제가 없다고 생각해서 내가 기존에 작성한 코드에서 문제가 생기는 건 아닐지 확인하기로 했다.org.springframework.security.authentication.Ba..
7.18(목) 백엔드 회의에서 API 명세서를 바탕으로 역할 분배를 했다. 어떻게 나눌까 하다가 최대한 동시에 작업할 수 있도록 도메인 별로 5~7개 정도씩 나눴고, 나는 그중에서 회원 도메인을 담당하게 됐다. 크게 보면 회원가입과 로그인, 로그아웃, 회원 정보 조회 API를 구현해야 했다. 소셜 로그인(애플)에서 이메일 인증 방식을 사용한 회원가입으로 바꾸기로 해서 구글과 GitHub에 관련된 내용을 검색해 봤다. 이미 로그인을 구현해 본 제아가 공유해 준 본인의 블로그 글도 참고하면서 진행했다. 개발 환경은 아래와 같다.Java 17Spring Boot 3.3.1GradleIntelliJ(IDE)MySQL(Main DB), Redis(Sub DB) Redis보통 이메일 인증 방식을 사용할 때 인증 코..
dev-meung
IT::Coding