전체 글 94

[프로그래머스/ 코딩테스트 2018 KAKAO BLIND RECRUITMENT] [1차] 비밀지도

Q. [1차] 비밀지도A.class Solution { public String[] solution(int n, int[] arr1, int[] arr2) { //지도를 저장할 문자열 배열 생성(지도 크기 n*n 정사각형) String[] answer = new String[n]; //각 행에 대해 반복 //arr1과 arr2에 대해 OR 연산 수행 //OR 연산 = 두 숫자 중 하나라도 1이면 1 for(int i = 0; i 계산이 되도 10진법이나 마찬가지 //OR 연산결과를 2진수로 바꾸기 for(int j = 0; j

[알고리즘] LexoRank 알고리즘

LexoRank 알고리즘 개념LexoRank는 동적인 정렬을 효율적으로 유지하기 위해 설계된 알고리즘으로, 연속적인 데이터의 순서를 유지하면서도 중간 삽입이 가능하도록 설계된 정렬 방식 Trello와 같은 태스크 관리 시스템에서 카드 또는 리스트의 순서를 유지하는데 사용됨 LexoRank 알고리즘의 필요성기존 정렬 방식의 한계를 극복1. 정수 기반 정렬일반적으로 데이터 정렬 순서를 나타낼 때 1,2,3,4 - 와 같은 정수 값을 사용하는데, 중간에 새로운 항목을 삽입하려면 기존 데이터의 position 값을 재정렬해야 하는 문제 발생대량의 데이터가 존재하는 경우 삽입 및 재정렬 시 성능 저하 문제2. 배열의 index 활용배열 기반 정렬에서는 중간 삽입이 어렵고, 대량의 데이터 재정렬이 필요함만약, 배열..

[트러블 슈팅] Trello(칸반보드) 프로젝트

1. GreenHopper 알고리즘 정밀도 문제1)개요리스트 정렬을 위해 GreenHopper 알고리즘을 사용하여 position 값을 생성하였는데, 처음엔 int 자료형을 사용하여 중간값을 계산했지만, 정밀도 문제로 인해 예상치 못한 값이 저장되는 문제 발생 2)문제상황double 타입으로 변환하여 position 값을 저장했는데, 연산 과정에서 부동소수점 오차 발생.즉, 데이터가 많아질수록 중간값을 정확히 계산하지 못하고 값이 비정상적으로 나오는 문제가 있었음이럴 경우 리스트 두개가 같은 위치를 가지게 되어 정렬이 깨질 가능성이 있음 3)해결방법1. BigDecimal을 사용하여 정밀도 향상-기존 double을 BigDecimal로 변경하여 소수점 오차를 방지 방법2. 기본값을 1에서 100으로 변경..

[TIL] Trello(칸반보드) 프로젝트

프로젝트 명 : 판 떼기소개한 줄 정리 : 트렐로를 모티브한 일정관리 서비스내용 : 트렐로를 모티브한 일정관리 서비스진행 날짜 : 2024.12.23 ~ 2024.12.31 프로젝트 요약1. 프로젝트 목적:신입 2년차 백엔드 개발자 채용 공고에서 요구하는 핵심 기술 역량을 실전 프로젝트를 통해 학습하고, 이를 기반으로 개발 역량을 검증하는 것이 목표백엔드 개발 기술 습득Java & Spring Boot 기반의 REST API 개발JPA & MySQL을 활용한 데이터 모델링 및 트랜잭션 관리Spring Security & JWT 기반 인증/인가 구현AWS 클라우드 환경에서의 배포 경험EC2 + Docker + Docker Compose로 컨테이너화된 애플리케이션 배포RDS(MySQL) 분리를 통한 데이터 ..

[성능 최적화 테스트 - 로컬환경] Redis 캐싱 적용 전 후 메시지 조회 성능 최적화 테스트

테스트 개요1. 목표Redis 캐싱 적용 전후의 성능 차이 검증MySQL을 단독 사용했을때의 조회와 Redis 캐싱 적용 후 조회의 TPS 변화 확인부하가 증가할수록 데이터베이스와 캐싱 성능의 차이를 수치로 분석부하가 증가하는 상황에도 안정적인 성능을 유지할 수 있는 지 검증MySQL 단독 사용 시 트래픽이 증가하면 TPS가 급감하는 현상이 발생하는지 검증Redis 캐싱을 도입하면 트랜잭션 처리 속도가 일정하게 유지되는지 확인데이터베이스 부하 감소 효과 확인Redis 캐싱을 활용함으로써 MySQL의 쿼리 요청 횟수가 얼마나 감소하는지 측정2. 목적서비스 응답 속도 개선UX를 향상시키기 위해 응답 지연을 최소화하고 실시간 데이터 조회 성능 개선Redis를 통한 빠른 응답을 유지하면서, 최신 데이터를 효율적..

[쿼리 최적화 테스트 - 로컬환경] JPA LEFT JOIN FETCH vs @EntityGraph 성능 비교, 비용 절감 및 최적화 테스트

테스트 개요1. 목표JPA를 이용한 취향 데이터 조회 성능 최적화N+1 문제 해결 및 쿼리 실행 시간 단축최적화된 방식으로 TPS 증가 및 비용 절감 효과 분석@EntityGraph, LEFT JOIN FETCH, Batch Size 등을 활용하여 어떤 방식이 가장 효율적인 조회인지 확인2. 목적N+1 문제 해결 : JPA의 Lazy Loading으로 인해 발생하는 다중 쿼리 문제 개선TPS 분석 : 최적화 기법 적용 전후의 트랜잭션 처리량 비교쿼리 비용 절감최종프로젝트 진행 시 외부 AI API를 연동하여 데이터를 분석하는 기능을 포함매 쿼리 실행 시 AI API가 호출되며, 이는 AI 토큰을 소비하면서 비용이 발생불필요한 API 호출을 줄이고 쿼리를 최적화하여 AI 사용 비용을 절감하는 것이 목적최적..

[부하 테스트 - 배포환경] CPU 사용률 70% 테스트, 부하 분산을 위한 서버 확장의 필요성

테스트 개요1. 목표:이중 서버 환경에서 CPU 부하율 및 TPS 처리 검증대량의 트래픽이 발생하는 환경에서 서버 이중화(Scale Out)가 성능에 미치는 영향을 검증서버 2대를 사용하여 부하를 분산하고, CPU 사용률과 TPS 변화를 분석서버 1대와 2대의 환경을 비교하여, 트래픽 증가에 따른 부하 분산 효과를 확인2. 목적CPU 사용률 70% 유지 목표 : 서버의 안정적인 운영을 위해 적정 부하 수준을 설정하고 성능 평가TPS 분석 : 서버 확장 전후의 트랜잭션 처리량 변화를 측정하여 성능 개선 여부 확인확장 전략 수립 : 서버 한 대 기준으로 적절한 사용량을 유지하는지 확인하고, 예상 운영 가능 범위를 정의3. 테스트 환경:서버 및 인프라 환경항목사양로드밸런서 유형Application Load B..

[부하 테스트 및 확장성 테스트 - 배포환경] 단일 서버 vs 이중 서버 성능 차이

테스트 개요1. 목표:부하 테스트 및 서버 확장성 테스트 (Load Test & Scalability Test)Redis 기반 캐싱을 적용한 상태에서 단일 서버 vs 이중 서버 성능 차이 측정부하 테스트(Load Test) 수행 후 트랜잭션 처리 속도(TPS) 분석서버 확장성 Scaling에 따른 성능 변화 분석정확한 서버의 성능 분석을 위해 극한의 상황으로 테스트2. 테스트 환경부하 테스트 도구: JMeter성능 측정 방식: TPS(Transactions Per Second) 분석테스트 조건:Number of Threads (users) : 200명Ramp-up period (seconds) : 20초Loop Count: 3000비교환경단일 서버 환경 (EC2 인스턴스 1개)이중 서버 환경 (EC2 인..

[트러블 슈팅] JPA 심화 개인과제

1. @DynamicInsert 사용1)개요DynamicInsert를 통해 DB의 기본값을 적용하려고 했지만, ItemEntity 테스트 코드를 작성 했을 때 nullable = false의 조건을 확인하는 과정에서 테스트 코드가 정상적으로 동작하지 않는 문제 발생 2)문제상황기본 값 설정을 @PrePersist를 사용해 처리하는 방식으로 수정을 했는데, 테스트 환경에서 DB에 직접적인 기본값 적용 확인이 어려워 DynamicInsert와 중복으로 인하여 여전히 동작하지 않는 문제 발생 DynamicInsert는 SQL INSERT 문을 생성할 때 null 필드를 제외시켜 DB의 기본값을 적용하지만, 코드에서 설정된 값과 충돌하거나 테스트에서 null 처리가 누락이 되면 동작하지 않는 문제 발생 3)해결..

[TIL] 배달 앱 아웃소싱 프로젝트

프로젝트 명 : 오늘은 뭐먹지?(What The Eat)소개한 줄 정리 : 오늘은 뭐먹지? 매일 선택의 순간에 놓인 당신을 위한 한 끼 추천 서비스진행 날짜 : 2024.12.03 ~ 2024.12.09 프로젝트 요약1. 프로젝트 목적Spring Boot + JPA를 활용한 도메인 설계 및 연관관계 매핑Soft Delete 기법을 통한 데이터 관리 방식 이해예외 처리 및 공통 응답 적용을 통한 안정적인 API 설계Enum을 활용한 상태 관리와 비즈니스 로직 캡슐화팀 내 코드 리뷰 및 리팩토링을 통한 유지보수 향상2. 프로젝트 구현회원 관리 : 회원가입, 로그인, 회원 탈퇴가게 관리 : 사장님이 가게 등록, 수정, 조회, 폐업 가능메뉴 관리 : 사장님이 메뉴 추가, 수정, 삭제주문 관리 : 고객이 주문 생..