profile
몰입하는 개발자
post-thumbnail

API 동시 요청으로 인한 데이터 무결성 문제해결

Learningit 서비스를 운영하던 중 특정 문제만 조회가 안된다는 얘기를 들었다.그래서 직접 문제를 앱을 통해 조회해봤더니 문제가 없었다. 다른 사람한테도 확인을 했을 때 역시 잘됐다.로그를 모니터링 해보니에러를 클라이언트에게 반환하고 있었고 DB를 본 결과유저의

2023년 11월 14일
·
0개의 댓글
·
post-thumbnail

멀티 모듈 Gradle 빌드 속도 개선

상황 CI/CD의 속도가 느려 CD의 속도를 이전에 개선했고, CI 부분에서의 개선점을 찾고 있었다.(CD 속도 개선 이전 포스팅) 로컬에서 gradle build시 속도가 느렸다. 기존 프로젝트를 빌드하는데만 로컬(M2 Pro)임에도 52초나 걸렸다. 해결

2023년 11월 13일
·
0개의 댓글
·
post-thumbnail

ECS 배포 속도 개선

ECS Fargate를 운영하면서 배포 속도가 너무 느리다 생각했다.그래서 원인을 찾아본 결과ECS의 컨테이너 오케스트레이션의 일부가 지나치게 안전하게 구성되어있기 때문임을 확인했다. 약간의 안전성과 배포 속도를 trade-off하여 배포 속도를 개선해보고자 한다.병렬

2023년 10월 10일
·
0개의 댓글
·
post-thumbnail

JDBC batch insert를 통한 대용량 데이터 삽입 최적화

batch 작업을 통해 유저 데이터를 머신 러닝 서버에 전달한 뒤 이후 다른 job에 의해 추천 데이터들을 받고 있는 상황이다.추천 데이터를 넘겨받고 저장하려는 로직을 만들고 있는 상황에서 머신 러닝 서버에서 사용되는 Matrix Factorization 방식에 의해

2023년 8월 13일
·
0개의 댓글
·
post-thumbnail

복합 인덱스 적용을 통한 쿼리 성능 개선

서버의 로그인 기능 구현 부분에서 프론트로부터 소셜 로그인이 완료된 유저의 oauthId와 개인 정보 등이 넘어오고 있는 상황이다.로직 중 일부인 이미 회원가입이 된 유저인지 확인하기 위해 oauthId를 조건으로 유저를 조회했다.기존평소였으면 그냥 조회만 되겠거니

2023년 8월 12일
·
1개의 댓글
·
post-thumbnail

[Spring Boot] 멀티 모듈 환경에서 프로젝트 환경설정관리의 중요성(feat. application.yml)

진행하고있는 프로젝트의 멀티 모듈 프로젝트 설정은 각 모듈이 관리하고 있다.즉, 프로젝트 설정의 중복을 허용한 상황이다.그렇다면 기존에 왜 중복을 허용했을까?3개의 모듈이 사용하는 설정, 2개의 모듈이 사용하는 설정, 1개의 모듈만 사용하는 설정 등 다양한 상황이 존재

2023년 8월 5일
·
0개의 댓글
·
post-thumbnail

[nginx] header 누락

문제 원인 로그아웃시 header에 access token과 refresh token을 넘겨받고, 해결

2023년 8월 1일
·
2개의 댓글
·
post-thumbnail

[Spring security 6] Controller test 403 Forbidden 에러(feat. csrf)

Spring Boot 3.x 버전을 사용하면서 Spring security도 6.x를 사용하게 됐다. 그런데 Spring Boot 2.x 버전과 Spring security 5.x 버전을 사용하면서 나타나지 않았던 문제가 생겼다.보통 csrf랑 연관되서 403 에러가

2023년 6월 30일
·
1개의 댓글
·
post-thumbnail

[JPA] 동시성과 데이터 정합성(feat. 더티체킹)

게시물의 좋아요 기능을 JPA의 더티 체킹 기능(=변경 감지)으로 작동시키고 있었다. 그러다 문득 든 생각이 만약 동시에 여러 요청이 들어왔을때 좋아요 개수의 정합성이 맞을까? 라는 생각을 하고 테스트를 진행했다.위와 같이 10000번의 요청이 동시에 들어오게되면?만약

2023년 4월 8일
·
0개의 댓글
·
post-thumbnail

[Docker] Docker 컨테이너와 redis 연결(feat. localhost)

ec2에 docker-compose로 스프링을 띄우고, ec2 로컬에 실행한 redis와 연결이 안되고 있다.application.yml에 작성한 redis의 호스트인 localhost(127.0.0.1)의 주소와 docker의 로컬 호스트 주소가 다르기 때문이다. (

2023년 2월 2일
·
0개의 댓글
·

[알고리즘] Java 유용한 것들

💡 새로 알게되었거나, 유용한 것들replaceAll(”^A-Z”, “”) 대문자알파벳을 제외한(^는 부정기호) 모든 것을 대체변수 최대 최소 초기화 해줄 때 Integer.MIN_VALUE, MAX_VALUE 활용하면 편하다.int\[] arr = new ints.

2022년 10월 2일
·
0개의 댓글
·

[QueryDsl] 성능 개선(exists, 다중 조건)

querydsl 에서 exists문을 사용하려면이렇게 fetchCount를 사용해야하는데 여기에 치명적인 단점이 있다.exists는 데이터 1개만 찾고 결과를 리턴하는 반면count는 모든 데이터를 조회하기 때문에 데이터가 많아질수록 성능 차이가 난다.우리의 목적은 데

2022년 8월 7일
·
0개의 댓글
·
post-thumbnail

[Swagger] Swagger 3 TypeError: Failed to fetch

많은 레퍼런스를 봤으나 내 상황과 맞는 사례는 없었고 그러다 Request URL을 보게 됐는데원래는 https://www.example.com/(요청URL) 이런식으로 요청이 되어야 하는데http://www.example.com/(요청URL) 이런식

2022년 8월 4일
·
0개의 댓글
·

[Spring Security] 로그인 이후 유저 정보 받아오기

Spring security를 구현해서 사용하고 있던 도중 궁금한 것이 생겼다.인증된 유저는 SecurityContextHolder에 저장되는데 클라이언트한테 로그인한 유저의 정보를 받아올 필요가 있을까??기존 유저를 조회하는 방식을 보면이런식으로 URL에 유저 id를

2022년 7월 9일
·
0개의 댓글
·
post-thumbnail

[JPA] Spring Data JPA

JPA표준 스펙에 디폴트 생성자 있어야함이 때 protected하는 이유는 프록싱 개체가 생성할 때 접근하는데, private으로 막아 놓으면 생성이 안되기 때문이다.protected Member(){} 이렇게 만들 수도 있겠지만, @NoArgsConstrucotr(a

2022년 3월 22일
·
0개의 댓글
·

[JPA] JPA Study 3

@Valid 했을 때 에러나면 어떤 식으로 결과값 보여줄지 → 나중에 적용해보자엔티티를 손대서 API 스펙이 달라지면 문제다. (@NotEmpty를 name에 할당했는데 name→username 으로 바꾸면 api스펙이 달라진다.) → 해결: DTO를 만든다.또 다른

2022년 3월 19일
·
0개의 댓글
·
post-thumbnail

[JPA] JPA Study 2

공부할 때 왜 그것을 배우는지 목적이 중요하다 생각한다. JPA를 왜 사용하는지도 마찬가지다.<목적>SQL 중심적인 개발에서 객체 중심으로 개발생산성유지보수패러다임의 불일치 해결성능데이터 접근 추상화와 벤더 독립성표준JPQL은 객체 지향 SQL 이다. 라고 생각하

2022년 3월 14일
·
0개의 댓글
·

[JPA] hibernate 버전 문제

InheritanceType.SINGLE_TABLE으로 설계해본 이후 InheritanceType.JOINED로 변경해서 테스트를 진행했더니error: unique index or primary key violation 에러를 뱉고, 테이블과 컬럼의 값이 변경이 되지

2022년 3월 10일
·
0개의 댓글
·

[JPA] JPA Study

초기 셋팅할 때 팁!Preference에서 annotation processors누르고, Enable annotation processing 체크Build and run using, Run tests using IntelliJ IDEA 로 변경하면 더 빠르게 빌드된다C

2022년 3월 6일
·
0개의 댓글
·