profile
기록을 통한 성장을
태그 목록
전체보기 (116)스프링(20)가상 면접 사례로 배우는 대규모 시스템 설계 기초(7)NestJS(7)회고(6)면접질문(4)인덱스(3)JPA(3)docker(2)X-Forwarded-For(2)이펙티브 자바(2)해커톤(2)Deadlock(2)데드락(2)CI/CD(2)aws(2)REST API(2)마켓컬리(1)transactional(1)Structuring(1)502(1)이벤트루프(1)원티드 해커톤(1)빌더패턴(1)쿼리 튜닝(1)더미 데이터(1)CodeDeploy(1)CodePipeline(1)S3(1)lifecycle(1)oAuth(1)referencedColumnName(1)validation(1)GDSC 해커톤(1)레디스 자료구조(1)Index(1)FK(1)쿼리 지연 실행(1)redis(1)lambda(1)TransactionalTestExecutionListener(1)presigned url(1)TDD(1)findByNonePk(1)AWS ALB(1)애플 로그인(1)연관관계(1)비동기(1)ecs(1)JavaScript(1)Spring Cloud Feign(1)X-Forwarded-Host(1)DataJpa(1)findByPk(1)git submodule(1)master-slave(1)디프만(1)매쉬업(1)KURLY HACK FESTA 2022(1)내컴퓨터 주도 개발(1)JWT(1)User-agent(1)github action(1)application.yml(1)소셜 로그인(1)aop(1)getRemoteAddr(1)해커리어(1)슈퍼셋(1)aurora db(1)테스트코드(1)mapped types(1)logger(1)스웨거(1)git subtree(1)매시업(1)트러블슈팅(1)fail over(1)UnexpectedRollbackException(1)ecr(1)1일1커밋 챌린지(1)db(1)best practice(1)OSIV(1)cors 테스트(1)replica lag(1)외래키(1)정적 팩토리 메서드(1)설정파일 우선순위(1)Hibernate(1)Spring(1)X-Forwarded-Proto(1)authentication(1)Controllers(1)codebuild(1)레디스(1)스프링 부트(1)slack(1)Task Scheduling(1)sentry(1)cors(1)논블로킹(1)

[Spring AOP] 레거시 데이터와 하위 호환성을 유지하며 새로운 데이터를 추가해보자

레거시 프로젝트를 이관하며 레디스에 쌓고 있던 레거시 데이터를 새로운 키값과 자료구조를 가진 새로운 데이터 변경해야했다. 기존에 이미 적재된 레거시 데이터와 하위호환성을 유지하며 새로운 데이터를 추가해보자🫠 데이터의 흐름은 다음과 같아요 데이터 삭제 시에 아래와

2023년 11월 12일
·
0개의 댓글
·

[Redis] 레디스의 수많은 자료구조는 어떤 상황에서 쓰일까

레거시 프로젝트를 이관하면서, 레디스 에서 key-value 외에 다양한 자료구조가 있다는 것을 알았다. 자료구조와 메서드 그리고 어떤 상황에 해당 자료구조가 적절한지 알아보자.레디스는 싱글 스레드 기반으로 동작하기 때문에 명령어의 시간복잡도를 파악한 후 해당 명령어로

2023년 11월 8일
·
0개의 댓글
·

[이펙티브 자바] 2장 객체의 생성과 파괴 : 생성자에 매개변수가 많다면 빌더를 고려하라

2장에서는 객체의 생성과 파괴를 다루는데, 아래 내용에 대해 생각하며 아이템 2을 읽어보자.<span style="color:- 객체를 만들어야 할 때는 언제인가객체를 만들지 말아야 할 때는 언제인가객체의 불필요한 생성을 피하는 방법은 무엇인가객체를 제 때에 파괴

2023년 11월 1일
·
0개의 댓글
·

[이펙티브 자바] 2장 객체의 생성과 파괴 : 생성자 대신 정적 팩토리 메서드를 고려하라

2장에서는 객체의 생성과 파괴를 다루는데, 아래 3가지에 대해 고민하면서 읽어보자.객체를 만들어야 할 때는 언제인가객체를 만들지 말아야 할 때는 언제인가올바른 객체 생성 방법은 무엇인가객체의 불필요한 생성을 피하는 방법은 무엇인가객체를 제 때에 파괴시키는 방법은 무엇인

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

[네트워크] AWS ALB의 HTTP 502 오류를 해결해보자

로드 밸런서는 클라이언트와 서버 중간에 위치하며 클라이언트 요청을 풀에서 처리할 수 있는 사용 가능한 서버로 라우팅한다. 한 서버가 다운되면 트래픽은 풀에 있는 다른 서버 중 하나로 자동 라우팅해주거나, 새 서버가 추가되면 트래픽을 자동으로 해당 서버로 라우팅해준다.A

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

[Spring] 설정파일 우선순위를 알아보자

서비스의 설정값을 변경해주었는데도, 반영이 안 되는 경우가 있다🫠설정값들이 위치하는 설정파일의 우선순위를 공부하고, 알맞은 파일에 설정값을 변경해주자.11번 application.properties(yml) 의 경우 파일 위치와 프로파일에 따른 우선순위가 적용된다.c

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

[Spring] 최초 요청 IP 는 어떻게 가져오는 걸까

우리 서버로 오기까지의 많은 인스턴스를 거쳐오지만, 우리는 최초 IP(Client IP) 가 필요하다.스프링은 X-Forwarded-For 에서 어떻게 최초 IP 를 가져오는지 알아보자.framework 로 설정 시, 표준 헤더 외에 비표준 헤더를 가져올 수 있다.임베

2023년 9월 26일
·
0개의 댓글
·

[네트워크] 사용자를 식별하는데 필요한 헤더값을 살펴보자

사용자가 사용한 기기, IP, 프로토콜 등등 사용자를 식별하는데 필요한 값들이 있다.위 값들은 헤더값을 통해 얻을 수 있다.웹 브라우저나 다른 HTTP 클라이언트가 웹 서버에게 자신의 식별 정보를 전달하는 HTTP 요청 헤더 중 하나이다. 이 헤더는 클라이언트가 어떤

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

[Spring] @DataJpa 는 자동 롤백이 기본 정책이다

@DataJpaTest 로 OneToOne 연관관계가 있는 객체를 조회하는데, Owner 에는 null 이 들어와서 테스트 코드는 실패한다.위의 테스트는 setUp(), getOwnerTest() 로 나누어져 있지만, 사실은 위와 같이 하나의 트랜잭션에서 수행되는 것과

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

[JPA] 연관관계를 이용하여 객체를 조회해보자

Person (사람)과 Animal(동물)이라는 객체가 있다.사람은 동물을 가지고 있을 수도 있고, 가지고 있다면 1마리만 가지고 있을 수 있다.Animal(동물)의 ownerId(주인 아이디) 필드에는 personId(사람 아이디)가 들어간다.사람에게 hasAnima

2023년 9월 18일
·
0개의 댓글
·

[Spring] 애플 로그인을 구현해보자

번거로운 회원가입 절차없이 버튼 클릭 하나만으로 서비스를 이용할 수 있는 소셜 로그인은 사용자 유입에 도움이 된다.하지만 iOS 앱은 카카오, 구글 로그인과 같은 소셜 로그인을 추가하려면 애플 로그인이 구현되어있어야 앱스토어 심사에서 리젝을 면할 수 있다.카카오나 구글

2023년 8월 30일
·
0개의 댓글
·

[트러블슈팅 - DB] Replica Lag 이슈

A 서버에서 Insert / Update 로직(Writer DB) 로직 수행 후에 B 서버에서 Select(Read DB) 로직이 수행되는 경우, Replica Lag 현상이 발생할 수 있다.Replica Lag복제 지연은 슬레이브(또는 보조)가 마스터(또는 기본)에서

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

[Aurora DB] Aurora DB 는 읽기 전용 커넥션일 때 알아서 라우팅을 해준다고?

"Aurora DB 사용하면 Transaction readOnly 인 경우에 Reader(Slave) Connection 타지 않아요?"어플리케이션에 있는 설정 정보라고는 Writer(Master) Cluster 설정뿐인데, 어떻게 Reader DNS를 찾아서 커넥션을

2023년 8월 14일
·
2개의 댓글
·

[Spring] 벌크 계정 생성 시, 병목 지점을 개선해보자

10000개의 데이터를 처리하는데 1시간 20분 정도가 걸리고 있다. 클라이언트와 read timeout 설정이 5분이라서 해당 메서드는 @Async 처리를 하였지만, 여전히 백그라운드에서 로직처리에 1시간 20분이 소요되고 있고, 이 시간동안 요청자는 기다려야 한다.

2023년 7월 29일
·
2개의 댓글
·
post-thumbnail

[Spring] 롤백 마크가 생긴 트랜잭션은 재사용이 불가능할까?

엄청 유명한 배민의 블로그 글(응? 이게 왜 롤백되는거지?)에서 봤던 에러가 발생했다. 이 참에 공부해보자.참여 중인 트랜잭션이 실패하면 기본정책이 전역롤백인데, 이 에러는AbstractPlatformTransactionManager(https://github

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

[JPA] findByPk 와 findByNonePk 에 차이가 있을까

findByXXX 로 영속성 컨텍스트에 저장 후에 더티체킹을 통해서 update 를 할 수 있다.findByXXX 에서 XXX 가 Pk(@Id) 인지 아닌지에 따라 더티체킹 순서에 차이가 있는 것을 발견했다.편의상 PK 로 조회하는 경우를 findByPk, PK 외에

2023년 7월 19일
·
2개의 댓글
·

[MongoDB] API 응답시간이 7초라고요..??

소셜 로그인 토큰 검증을 위해서 프록시 서버 -> 인증 서버로 호출을 하고 있다.개발 후에 클라분들께 전달 드렸는데, 프록시 서버에서 해당 API 를 호출하자 인증서버에서 프록시 서버로 응답하는 시간이 5초를 초과하여 타임아웃 에러가 발생했다.기존에 카카오 간편가입 밖

2023년 6월 20일
·
0개의 댓글
·

[트러블슈팅 - Spring] IDE 에서 되는데 배포하면 안 돼요

IDE 에서 잘 읽히던 파일이 배포하면 아래와 같은 에러가 났다.에러가 발생하는 곳은 이곳이다.IDE 실행 경로(URL)JAR 실행 경로(URL)jar 파일 내부로 들어갈 때 파일 경로에 !가 포함되게 된다.업로드중..file 로 시작하지 않으면, FileNotFoun

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

[트러블슈팅 - Spring] Feign Form 요청시에는 final 필드를 조심하자

다른 서버와의 통신을 위해 Spring Cloud Feign 을 사용하고 있다. 요청 필드 중에 디폴트값으로만 보내야하는 요구사항이 있어 해당 필드는 final 필드로 선언을 해놓았다.다른 서버에서 해당 필드(job) 에 유효성 검증(@NotNull)을 추가하면서, 슬

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

[트러블슈팅 - DB] 인덱스(Index)와 데드락(DeadLock)

역시 해치웠나를 외치면 안 되는 것인가... 또 울기 시작한 페페... (그만 울어잇!)의미있는 경험으로 남기기위해 기록해보자.parent 테이블의 id를 index로 가지고 있는 child_index 테이블 생성(외래키는 운영에서 삭제되어서 테스트시 고려하지 않습니다

2023년 5월 22일
·
0개의 댓글
·