본문 바로가기

전체 글77

Nginx 413 Request Entity Too Large 문제상황 - 공지사항 게시판을 구현하면서, 본문에 들어갈 이미지를 업로드할 수 있는 API를 구현하던 상황 - 특정 용량이 넘는 이미지를 업로드하려고 하면 nginx에서 413 Request Entity Too Large 에러가 발생했습니다. - 클라이언트(브라우저)의 개발자 도구에선 CORS Error로 보여졌습니다. 원인 저희는 Reverse proxy로 nginx를 사용하고 있었는데, 기본적으로 파일 업로드 크기가 1MB로 제한되어 있더라구요. 그래서 이 설정을 수정해야만 합니다. Forward proxy? - 일반적인 프록시를 말하며, 다수 클라이언트의 요청을 받아 미들웨어처럼 목적지에 대신 요청을 보내서 받은 응답을 클라이언트에 전달(forward)해준다. - 캐싱 기능을 통한 성능 향상, 특정.. 2021. 5. 9.
Testcontainers - Localstack 설정 중 생겼던 궁금증 문제상황 - AWS S3를 사용하는 어플리케이션에서 통합 테스트 코드 작성 - 어플리케이션 외부의 클라우드 서비스인 S3 Mocking 필요 - 이를 위해 Testcontainers의 Localstack 설정하던 중 문제 발생 잠깐! 사전 지식 Testcontainers? - JUnit 테스트를 보조하는 자바 라이브러리 - 데이터베이스, Selenium 웹브라우저와 같이 도커 컨테이너로 실행될 수 있는 모든 종류의 인스턴스 제공 - Data access layer integration tests에선 DB의 컨테이너화된 인스턴스를 제공하여 영속성 계층을 쉽게 테스트할 수 있습니다. 즉, 외부 DB의 상태에 의존하지 않게 됩니다. - Application integration tests에선 DB, Messa.. 2021. 4. 25.
Mock 테스트에서 Spring 프로퍼티를 읽어올 수 없던 문제 문제상황 // 서비스 클래스 @RequiredArgsConstructor @Service public class AdminService { @Value("${spring.profiles.active}") private String activeEnv; // ...서비스 로직 } // 테스트 클래스 @ExtendWith(MockitoExtension.class) class AdminServiceTest { @InjectMocks private AdminService adminService; // ...테스트 코드 } 서비스 레이어의 테스트를 진행하기 위해 Mockito를 사용한 테스트를 만들었던 상황입니다. 서비스 클래스에선 현재 활성화된 프로파일의 이름을 사용하고자 @Value를 통해 프로퍼티를 주입받았습.. 2021. 4. 11.
[Diary] 2020년 회고 - 업무 취업준비를 하면서 개발자분들의 회고를 보고 나도 개발자가 되면 저렇게 매년 회고글을 작성해야지 생각했던 게 엊그제 같은데, 어느새 1년을 직장인으로 보내며 이렇게 글을 작성하게 되었네요. 더 성숙한 개발자가 되기 위해서 오늘은 2020년을 돌아보는 글을 써보려 합니다. 이번 회고는 올해 제가 진행했던 업무를 중심으로 되새겨 보겠습니다. 타임라인 2020.01 ~ 2020.06 : 하나금융티아이 하나카드 ITO 법인 파트 2020.07 ~ 2020.09 : 딜리셔스 개발 인턴 2020.09 ~ : 정규직 전환 후, 딜리셔스 개발팀 재직중 금융권에서 처음 직장생활을 시작하면서 개발자라는 직업을 가지게 된 해였습니다. 그렇지만 제가 생각했던 개발자의 성장을 이 회사에선 이루기 힘들다 생각하여 이직을 준비했고,.. 2021. 2. 7.
[redis] redisson을 통한 분산 락 저는 입사 후 광고 플랫폼의 어드민 쪽을 담당하여 개발하고 있는데요. 트래픽은 적지만, 다수의 심사자가 동시에 동일한 요청을 할 경우 동시성 문제가 발생할 여지를 안고 있었습니다. 심사의 상태값을 변경할 수 있는 기능을 예로 들어보겠습니다. 해당 기능은 심사자의 잘못된 심사와 같은 휴먼 에러를 해결하기 위해 개발되었습니다. 승인된 심사를 거절로 바꾸거나, 거절된 심사를 승인으로 바꿀 수 있는데요. 이 때 심사 이력을 남기기 위해 기존 심사 데이터의 상태를 변경하지 않고, 원하는 상태의 새로운 심사를 생성하여 기록합니다. 이 때 어떤 심사자가 심사 완료 버튼을 순식간에 여러 번 클릭하면서 동일한 요청을 여럿 보내게 되면 "원하는 상태의 새로운 심사"가 다수 생성되는 동시성 문제가 발생했습니다. 결과적으로는.. 2021. 1. 24.