[Etc] JMeter 설정 및 실행
·
etc
0.  들어가기 전서비스 개발 과정에서 사전에 다양한 문제 상황을 예측하고 해결하는 것은 매우 중요합니다. 운영 중에도 여러 문제에 직면할 수 있지만, 특히 트래픽이 많은 상황에서는 예상치 못한 이슈가 발생할 가능성이 높습니다. 이러한 문제를 미리 발견하고 대비하기 위해 부하 테스트와 성능 테스트를 수행해야 합니다. 저는 JMeter를 활용하여 성능 테스트를 진행하고자 합니다. 💡선택 이유1. 설치 및 사용이 쉬워 빠른 출시를 해야 하는 현재 저희 서비스 상황에 맞았습니다.2. 매주 기술 세미나가 있는데 팀원 중 Ngrinder를 사용해 본 팀원이 있어 제가 JMeter를 학습하고 발표한다면 서로에게 좋은 지식 공유가 될 것이라 생각했습니다. 1.  사용법a. 설치 방법brew install jmete..
[백준] 10816 : 숫자 카드 2 (JAVA)
·
Algorithm
https://www.acmicpc.net/problem/10816 🚩이진 탐색문제의 알고리즘 분류를 확인하기 전에 문제를 읽자마자, map.getOrDefault를 활용해 간단히 해결할 수 있었습니다. 아래는 map.getOrDefault를 사용해 통과한 코드입니다.import java.io.*;import java.util.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(n..
[Spring] API 공통 응답 포맷
·
Programming/Spring
0. 들어가기 전클라이언트 단에서는 백엔드에서 개발한 API Response를 토대로 데이터 모델이라는 것을 만들어 화면에 데이터를 출력해야 합니다.만약 통일된 규격의 API Response가 없으면 클라이언트 개발자들은 API마다 데이터 모델을 일일이 만들어야 합니다. 그러므로 백엔드에서는 어느 정도 통일된 양식의 API를 전달해 주는 것이 좋습니다. 공통 응답 패키지 구조는 다음과 같습니다.1. 공통 응답 포맷a. 정상 응답정상 응답일 경우, 위와 같은 형태의 응답 포맷을 반환하는 것이 목표입니다. success는 정상 응답 시 true로 반환되며, data는 객체의 상태를 JSON 형식으로 반환합니다. error는 에러가 발생한 경우 에러 코드와 설명을 포함하며, 정상 응답일 경우 null을 반환합..
[Spring] 동시성 처리
·
Programming/Spring
0. 들어가기 전이전에는 DB 단의 동시성 처리 방법인 Lock에 대해서 알아봤습니다. https://young-code.tistory.com/17 [DB] 락(Lock)1. Lock이란?여러 커넥션에서 동시에 동일한 자원을 요청할 경우 순서대로 하나의 커넥션만 변경할 수 있게 해주는 기능입니다. 📌 참고락을 이해할 때 '락을 획득한다'라는 의미를 '외부에서 잠young-code.tistory.com 이번에는 애플리케이션 단에서 어떻게 동시성을 처리하는지 살펴봅시다.실질적으로 서비스에서 동시성을 처리하는 부분은 애플리케이션 단이기 때문에 DB 단의 Lock은 개념적인 부분으로 이해하고, 실무에서는 이번에 포스팅하는 애플리케이션 단의 동시성 처리가 중요할 것 같습니다! 재고 시스템에서 동시성을 어떻게 처..
[DB] 락(Lock)
·
Data Infra/Database
1. Lock이란?여러 커넥션에서 동시에 동일한 자원을 요청할 경우 순서대로 하나의 커넥션만 변경할 수 있게 해주는 기능입니다. 📌 참고락을 이해할 때 '락을 획득한다'라는 의미를 '외부에서 잠금을 건다.' 라는 의미로 이해했습니다. 외부에서 잠금을 거는 것이 아니라 '내가 방으로 들어가서 내가 방문을 잠그는 것'의 관점으로 이해하니 더 쉽게 이해할 수 있었습니다.  2. Lock의 종류락의 종류는 크게 다음과 같은 2가지 종류로 나뉩니다.공유 Lock (Shared Lock, Read Lock, S-Lock)베타 Lock (Exclusive Lock, Write Lock, X-Lock) a. 공유 Lock (Shared Lock, Read Lock, S-Lock)공유 Lock은 데이터를 변경하지 않는..
[DevOps] Domain & SSL 설정
·
DevOps/etc
도메인 및 SSL 설정 방법에 대해서 공유해보겠습니다!💡참고가비아에서 도메인 구매AWS Route 53에서 서브 도메인 설정  🔐 Domain & SSL 1. Domain a. 도메인 구매가비아에서 howabout.shop 이라는 도메인 구매구매 시 타사 네임서버 사용 옵션 선택b. AWS Route 53에서 네임서버 정보 설정AWS Route 53에서 도메인의 호스팅 영역 생성호스팅 정보 입력도메인 이름 : howabout.shop 입력타입 : Public hosted zone 선택네임서버(NS) 레코드 확인호스팅 영역을 생성하면 Route 53에서 기본적으로 네임서버(NS) 레코드와 SOA 레코드가 자동으로 생성생성된 호스팅 영역의 NS 레코드에 나열된 네임서버 주소(보통 4개의 주소)를 확인가비..
[백준] 1916 : 최소비용 구하기 (JAVA)
·
Algorithm
https://www.acmicpc.net/problem/1916 🚩다익스트라 (Dijkstra) 1916번 문제를 보자마자 기본적인 다익스트라 알고리즘으로 해결할 수 있겠다고 생각을 했습니다. 평소에 알고 있던 다익스트라 방식으로 구현을 진행했고, 예제 출력도 정상적으로 나왔기 때문에 정답 제출을 했는데요..  결과는 시간 초과입니다🥲15% 지점에서 계속 시간 초과가 발생했고, 문제를 다시 확인해 보니 시간제한이 0.5초 인걸 확인할 수 있었습니다. 시간 복잡도를 개선하기 위해 코드 분석을 해봤지만 문제의 원인은 찾지 못했고 검색을 통해 해결책을 찾아보니, queue에서 poll() 연산을 수행할 때 해동 노드의 방문 여부를 확인하는 처리가 필요하다는 것을 알게 되었습니다. '근데.. queue.a..
[Spring] Security + JWT + OAuth2를 이용한 로그인 구현 (5) - OAuth2.0 로그인 관련 클래스 생성
·
Programming/Spring
OAuth2.0 로그인 관련 클래스 코드를 설명드리고자 합니다. 0. 들어가기 전OAuth 관련 패키지 구조는 다음과 같습니다. OAuth2Service를 생성하기 위해 spring-boot-starter-oauth2-client 라이브러리를 사용합니다.build.gradle에 다음과 같이 의존성을 추가해 줬습니다.implementation 'org.springframework.boot:spring-boot-starter-oauth2-client' 1. DefaultOAuth2User 클래스OAuth2UserService에서 사용할 OAuth2User 객체 클래스입니다.일반적으로, 다른 프로젝트나 서비스에서는 Resource Server가 제공하지 않는 추가 정보를 관리하기 위해 DefaultOAuth2..
[백준] 16953 : A -> B (JAVA)
·
Algorithm
https://www.acmicpc.net/problem/16953 🚩NumberFormat오늘은 백준 16953번을 BFS을 이용해서 Java로 풀어봤습니다. 생각보다 간단한 문제라고 생각이 들었고 몇 분 만에 구현할 수 있었습니다. 하지만 계속 백준에서 런타임 에러(NumberFormat) 결과를 받았습니다. Intelli J에서는 예제를 전부 통과했는데 말이죠.. NumberFormat이 발생하는 이유는 주로 2가지가 있다고 합니다.문자열 형식 오류 : 변환하려는 문자열에 숫자가 아닌 문자가 포함된 경우입니다. 예를 들어, "123a" 같은 문자열은 숫자가 아니므로 변환할 수 없습니다.숫자 범위 초과 : Integer.parseInt나 Long.parseLong은 각각 int와 long의 범위를 ..
[백준] 11054 : 가장 긴 바이토닉 부분 수열 (JAVA)
·
Algorithm
https://www.acmicpc.net/problem/11054 🚩DP백준 11053번 문제인 '가장 긴 증가하는 부분 수열'을 풀어본 경험이 있어서 쉽게 접근할 수 있었습니다.11053번은 단순히 오른쪽 방향으로 증가하는 가장 긴 부분 수열을 구하는 문제였지만, 이번 문제는 증가 후 감소하는 가장 긴 부분 수열을 찾아야 했습니다. 부분 수열 문제는 보통 DP나 이분 탐색을 활용해서 해결하는 경우가 많기 때문에, 이번에도 DP로 접근했습니다. 🤔 증가 후 감소하는 부분 수열..?한쪽 방향으로 증가하는 가장 긴 부분 수열 문제만 풀어서 그런가.. 증가 후 감소하는 부분 수열 구현이 바로 떠오르지 않았습니다.곰곰이 고민한 끝에, 왼쪽에서 증가하는 부분 수열과 오른쪽에서 증가하는 부분 수열 각각 구한 ..