일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 프로토콜
- Java
- Spring
- 3-way-handshake
- 인메모리
- 스프링부트
- Spring Security
- RDS
- OSI 7계층
- 백준
- 객체지향
- 동시성 문제
- redis
- TCP/IP
- 코딩테스트
- 4-way-handshake
- N+1 문제
- 성능 개선
- 트러블 슈팅
- 객체지향의 사실과 오해
- 형상관리
- docker
- EC2
- 네트워크
- OOP
- 알고리즘
- 로그인
- JWT
- AWS
- JMeter
- Today
- Total
목록분류 전체보기 (13)
열공스토리
Docker Compose에 포함된 스프링부트 프로젝트를 AWS EC2 서버에 배포해 보았습니다.EC2 인스턴스 생성1. 이름 및 태그인스턴스의 이름과 태그를 설정합니다. 2. AMI 설정운영체제는 우분투를 선택했습니다. 여기서 문득, 다른 개발자 블로그들을 보면 ec2 운영체제를 선택하는 부분에서 대부분 우분투를 선택하는 데 그 이유가 궁금해졌습니다. 그래서 찾아본 결과,1. 우분투는 리눅스의 배포판이므로 리눅스의 기능들을 사용할 수 있다.2. 오픈소스 소프트웨어와 호환이 잘 되기 때문에 웹 서버, 데이터베이스, 애플리케이션 서버 등의 설치와 운영에 최적화 되어 있다.정도로 정리할 수 있었습니다. (이외에도 다른 이유들이 있겠지만 그러한 부분들은 다음에 제대로 활용해 보면서 찾아봐야 겠다고 생각했습니다..
현재 진행중인 프로젝트에 스프링부트 프로젝트에 AWS RDS를 연동해 보았습니다. RDS 데이터베이스 생성부터 연동 및 테스트하는 과정을 기록했습니다. RDS 데이터베이스 생성1. 데이터베이스 서비스 선택MySQL 8.0.39 버전 선택을 선택합니다. 2. 템플릿 선택테스트용 배포이므로 프리 티어를 선택했습니다. 3. 데이터베이스 설정DB 접속 시, 필요한 사용자 이름과 암호를 설정해 줍니다. 4. 인스턴스 구성프리 티어는 기본적으로 버스터블 클래스로 고정됩니다. 5. 스토리지 설정프리 티어는 기본적으로 20GiB를 제공합니다.스토리지 자동 조정 옵션은 비활성화 해줍니다. (활성화 시, 요금 부과 발생) 6. 가용성 및 내구성기본 값으로 자동 설정됩니다. 7. 연결 설정당장은 로컬에서 테스트를 진행할 것..
현재 진행중인 “DevHub” 프로젝트의 회원가입 과정에는 이메일 인증 기능이 존재합니다. 여타 서비스와 같이 자신의 이메일을 입력하고 인증 요청을 하면 입력한 이메일로 인증 코드가 포함된 메일이 발신되고 받은 인증 코드로 이메일 인증을 하게 됩니다. 문제를 인식하게 된 시점은 JMeter 테스트 도구로 이메일 인증 기능을 테스트 하는 과정에서 요청에 대한 응답 시간이 오래 걸리는 걸과를 얻었을 때 였습니다. 이를 계기로 문제를 개선할 필요가 있다고 생각이 들었고 결과적으로 1초 동안 각 요청으로부터 소요된 응답 시간을 평균 4.159초(4159ms) → 0.017초(17ms)로 개선하였습니다.개선 전 테스트 결과이메일 인증 기능을 개선하기 전 코드는 다음과 같았습니다.[서비스 로직]public Mail..
현재 git과 같은 형상관리 시스템을 활용하기 어려운 초보 개발자들을 위한 형상관리 웹 서비스를 개발하고 있습니다. 형상관리 서비스에는 "팀 프로젝트 최초 저장"이라는 API가 존재하는데, 이는 팀을 만들고 팀의 레포지토리를 만든 다음에 최초로 프로젝트를 업로드하는 API 입니다. 처음에는 이 API를 여러 팀원이 동시에 요청했을 경우 파일을 업로드 했을 경우 서버에는 최초 한 팀원의 파일만이 저장되는 것을 의도하였습니다. 하지만 의도와 달리 여러 팀원이 동시에 업로드한 파일이 서버에 모두 저장되었고 이러한 문제를 DB 락을 걸어 우회적인 방법으로 해결하였습니다. 이번 포스팅에서는 위 상황에서의 문제를 해결하는 과정에 대한 자세한 기록을 남겨보았습니다. 처음 "팀 프로젝트 최초 저장" API 요청에 대..
import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Scanner; public class Main { static int N; static int M; static class Input { private final Scanner scanner; public Input() { this.scanner = new Scanner(System.in); } public int inputLaptopRow() { return scanner.nextInt(); } public int inputLaptopCol() { return scanner.nextInt(); } public int inputSticke..
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { private static int N; private static int M; private static final int[] nextN = {0, 1, 0, -1}; private static final int[] nextM = {1, 0, -1, 0}; static class Dice { private int diceNet[]; private int n; private int m; private int direction; Dice() { th..
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.StringTokenizer; import java.util.stream.Collectors; public class Main { private static final int S_POLE = 1; private static final int CLOCKWISE = 1; private static final int COUNTERCLOCKWISE = -1; static class G..
이번 포스팅에서는 TCP/IP 모델에 대해 정리해 보았습니다. TCP/IP란? TCP/IP란 인터넷에서 컴퓨터들이 정보를 주고 받는데 쓰이는 프로토콜의 집합을 의미합니다. 프로토콜 : 네트워크 통신을 위해 미리 정해놓은 공통된 메뉴얼 TCP/IP 4 계층 TCP/IP 모델은 다음 왼쪽 그림과 같이 4개의 계층으로 구성되어 있습니다. 오른쪽 그림은 OSI 모델의 7계층을 나타내는데 OSI 계층 중 Application Layer, Presentation Layer, Session Layer가 TCP/IP 모델에서 Application Layer와 대응되는 것을 의미하고 Data Link Layer, Pysical Layer가 Network Access Layer(Network Interface)와 대응되는..