[로아투두] 로그 저장 최적화 작업
·
Project/LOATODO
1. 서론로그, 타임라인 서비스 추가 후 서버가 계속 터짐...2. 원인 파악1) Jmeter 테스트Jmeter로 300명의 사용자 테스트 [에러 메시지]{"errorCode":400,"exceptionName":"CannotCreateTransactionException","errorMessage":"Could not open JPA EntityManager for transaction; nested exception is org.hibernate.exception.JDBCConnectionException: Unable to acquire JDBC Connection"} -> JDBC 커넥션이 없다. 원인 파악application.properties 설정 후 로그 확인logging.level.org...
[로아투두] 에러 로그 출력 변경
·
Project/LOATODO
1. 서론기존에 서버에서 발생한 에러를 디스코드 웹훅으로 받고 있었음 여기서 불편한점따로 에러가 발생하지 않고 메시지만 출력되는 내용을 굳이 디스코드를 받아야할까?ex) "상위 관문을 먼저 제거하여 주십시오." 누가, 어느 API를 호출해서 발생한 에러인지 모른다. 이 문제를 해결하고자 한다.  2. 개발관련 커밋fix: 기존 에러 처리 변경 fix: 기존 에러 처리 변경 · minhyeok2487/LostarktTodoBackend@b12e28d- 간단한 에러는 webhook을 보내지 않음github.comfix: 에러에 헤더 수집 fix: 에러에 헤더 수집 · minhyeok2487/LostarktTodoBackend@4046729minhyeok2487 committed Mar 5, 2025githu..
[로아투두] bucket4j를 이용해 트래픽 요청 제한하기
·
Project/LOATODO
1. 서론최근 로아투두 사용자가 많아지면서 서버의 많은 부하가 걸렸다.패치날인 수요일 저녁같은 경우에는 감당하기 어려울 정도... 그러다가 2월 26일 오후 4시정도에 카톡이 많이와서 확인해보니로아투두 서버가 터졌다는 사용자들의 톡을 보게되었다. JDBC Connection이 부족해서 서버가 재실행된거 같은데...왜...??? Connection 연결 개수 모니터링 Connection 대기가 갑작스럽게 200개 가까이 늘어났다.근데... 나는 설정에 최대를 30개를 줬는데 왜 10개밖에 Active가 안된거지..? Request Count Increase 모니터링 음..... 원인 파악: 특정 API가 Connection을 많이 물고 있어서 알림을 체크하는 API 요청이 Connection을 가져오지 못..
[로아투두] 2025년 기획
·
Project/LOATODO
1. 가로모드고민...고민... https://app.loatodo.com/post/1024현재 로아투두는 그리드 형식으로 되어있음. 이렇게 되면 캐릭터가 많아졌을때 필연적으로 스크롤로 내려야함 그러지 말고 던파처럼 테이블 형식으로 있으면 어떨까 상단에서 필요한 항목만 체크해서 전체 캐릭터를 한번에 볼 수 있도록 하는 방식음.... 근데 이러면 API 많이 추가해야하고 체크할 항목 많아질지도... 2. 일정 개편2/4 분기 꼭 할꺼임 일정 기능은 뭔가 베타 버전이라고 봐야할 정도로 조잡함...해당 일정에 자동으로 체크된다던가... 한달 통으로 보여준다던가 하는게 좋을꺼같음 https://app.loatodo.com/post/1007 기타 커뮤니티 요청사항1. 깐부와 숙제 연동https://app.loat..
모던 자바: 자바 8에서 자바 21까지 심층 가이드
·
Language/Java
해당 글은 아래 링크의 내용을 번역 + 추가한 것 입니다.https://medium.com/java-and-beyond/modern-java-an-in-depth-guide-from-version-8-to-21-by-akiner-alkan-f89b50e13c72 0. 서론자바는 다재다능한 프로그래밍 언어로, 변혁의 여정을 걸어왔습니다.자바 8부터 흥미로운 기능들이 개발자들의 코딩 방식을 바꾸어 놓았습니다.  더 나은 기능을 위한 깔끔한 람다 표현식부터 데이터를 더 쉽게 다룰 수 있도록 해준 Stream API까지, 자바 8은 혁신적인 변화를 가져왔습니다.우리는 자바 21까지의 업데이트를 살펴볼 것입니다.이 현대적인 자바 기능들을 간단한 설명과 실용적인 예제로 풀어가며 함께 여정에 동참해 보세요.이 여정이..
[Java] Function 인터페이스를 활용한 조회 로직 개선
·
Language/Java
1. 상황로아투두 프로젝트를 진행하면서 Member Entity를 조회하는 여러 메소드들이 있었는데,그 중 회원 한명을 조회하는 Get 메소드는 입력받은 파라미터만 다르고 거의 동일한 join 구문과 fetch 로직이 반복되고 있었습니다.이러한 상황에서 새로운 join이 필요하거나 파라미터가 추가될 때마다 모든 관련 메소드를 수정해야 하는 번거로움이 있었죠. [username으로 조회하는 메소드와 id로 조회하는 메소드]@Overridepublic Optional get(String username) { return Optional.ofNullable( factory.select(member) .from(member) ..
[프로그래머스 / Java] 연속 펄스 부분 수열의 합
·
CodingTest/Algorithm
1. 문제 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr [문제 요약]부분 수열의 합 중 가장 큰 값을 구하라 2. 생각1. 코딩테스트는 두 가지 유형이 있지문제가 길어 문제가 요구하는 방향을 이해하면 풀 수 있는 문제와문제가 짧어 뭘 구하라는지 알겠는데 어떻게 구해? 하는 문제이 문제는 후자의 경우... 문제 보자마자 든 생각: 뭐 어떻게 구해?2. 펄스 수열 이용해서 2개의 배열 만드는 것까지는 쉬움3. "수열의 부분 수열의 최댓값" 이거 구하는게 관건같은데...하나씩 다 만들어보기에는 sequence의 길이 제한이 커서 안될꺼같다4. 30분정도 고민해보고 인터넷 찾아봤는데 이미 "카데인 알고리즘"..
[프로그래머스 / Java] 입국심사
·
CodingTest/Sorting & Thinking
1. 문제 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr [문제 요약]모든 사람이 심사를 받는데 걸리는 시간의 최솟값 구하기숫자의 범위가 크다 2. 생각대로 풀기숫자의 범위가 크다 -> 이분 탐색 (코드 설명 주석은 AI 활용)import java.util.Arrays;class Solution { public long solution(int n, int[] times) { // n: 입국심사를 기다리는 사람 수 // times: 각 심사관이 한 명을 심사하는데 걸리는 시간이 담긴 배열 // 심사 시간을 오름차순으로 정렬 Arrays.sort(..
[프로그래머스 / Java] 징검다리 건너기
·
CodingTest/Sorting & Thinking
1. 문제 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr [문제 요약]최소 몇 명이 건널 수 있는지 구하기숫자가 적힌 배열, 건널 수 있는 길이숫자의 범위가 크다 (원소의 값이 최대 2억) 2. 생각대로 풀기숫자의 범위가 크기 때문에 무작정 반복문을 돌리면 안된다.N명이 건널 수 없다면, N보다 큰 수의 사람들도 건널 수 없음.N명이 건널 수 있다면, N보다 작은 수의 사람들도 건널 수 있음.-> 이진탐색으로 좁혀가면서 N찾기import java.util.*;class Solution { public int solution(int[] stones, int k) { int left = ..