728x90
적용 배경DB password 등을 관리하는 application.yml 파일을 Github에 그대로 올리게 된다면 보안 상 문제가 될 수 있다.이러한 문제를 해결하고 application.yml 값을 안전하게 다루기 위해 사람들은 다양한 방식을 적용한다. 현재 왓캠퍼스 프로젝트는 빠른 배포를 위해서 단순히 application-prod.yml를 Git Actions Secrets을 통해 관리하고 있었다.그리고 CD 과정에서 artifact 파일을 생성하기 전, resources 패키지에 해당 파일을 저장해주는 방식을 사용했다. 하지만 그렇게 관리했을 때 특정 프로퍼티 값은 위와 같이 읽을 수 없는 문제가 발생했다.application-prod.yml 을 통해 다른 로컬에서 작업하려면 직접 해당 파일을..
작업 배경서버를 운영할 때는 로깅을 통해 서비스 운영에 유용한 매트릭을 흭득할 수 있다. 특히 요청/응답 정보 로깅은 실제로 서비스를 운영하면서 버그가 발생했을 때 해당 버그가 어떤 요청에서 비롯되어 어떻게 처리되다가 버그가 발생된 것인지를 쉽게 확인할 수 있도록 만들어준다.또한 '어떤 요청을 받고 있는지', '적절한 응답을 보내고 있는지', '수상한 요청(Dos, DDos 등)은 없는지', '요청에 소요된 시간이 길진 않은지' 등 유용한 지표를 얻을 수 있다. 이렇듯 장점이 명확하기 때문에 요청/응답 정보 로깅은 서버를 개발하는 과정에서 필수적으로 진행해야하는 과정이라고 생각한다.때문에 오늘은 스프링부트에서 Request/Response 정보를 로깅하는 방법에 대해서 알아볼 것이다. AOP 로깅 vs..
문제 상황왓캠퍼스 프로젝트를 Java/Spring -> Kotlin/Spring 으로 마이그레이션 하는 과정에서 하나의 문제를 마주했다.바로 'Kotlin 코드에서 Lombok 적용이 안 된다는 점' 이었다. 이에 따라 간편한 로깅을 위해 사용하던 Lombok의 @Slf4j 애노테이션까지 사용이 불가능해졌다.때문에 로깅을 해야하기도 하고, 이유도 궁금해서 해당 문제의 원인에 대해 찾아보게 되었다. Lombok이란?Lombok 공식문서의 소개에 따르면 Lombok은 아래와 같은 라이브러리이다.Project Lombok is a java library that automatically plugs into your editor and build tools, spicing up your java.Never wr..
문제 상황 정의 생산성 저하 우리 팀에서는 땅콩 개발 초기에, 테스트 코드를 작성할 때 위와 같은 init-test.sql 파일을 사용했었다. 초반에는 위와 같이 사용함으로 인해 테스트 코드 작성 시에 굉장히 길어질 수 있는 데이터 초기화 로직을 제거할 수 있었다.미리 init-sql에 정의되어 있는 값만 가져다가 사용하면 되어서 편리하다고도 생각했다. 하지만 위 방식에서는 문제점이 있었다. 데이터가 얼마 없을 때는 편리할 줄 알았으나테스트 코드에서 사용할 데이터를 참조할 때 매번 init-test.sql 파일에 접근해서 사용할 데이터의 ID값을 확인해야하는 것이 굉장히 불편했다. 이로 인해 테스트 코드 작성의 생산성이 저하 되었다. 가독성 저하 생산성 저하로 인해서 잘 사용하지 않게 되자, 결국 테..
이 글은 김영한님의 스프링 MVC 강의 영상을 참조하여 작성되었습니다. Spring MVC 동작 과정 🍃 0. HTTP 요청 💭Client로부터 요청이 들어오면 Front Controller인 Dispatcher Sevlet이 요청을 받는다. Dispatcher Sevlet은 받은 요청을 처리할 수 있는 Handler 객체를 가져온다. 0번 과정에서 Dispatcher Servlet에 요청이 들어오기 직전이 Filter의 동작 시점이다.Dispatcher Servlet 이후에 동작하는 ControllerAdvice는 이러한 동작 시점에 의해 Filter 측에서 발생하는 예외까진 잡지 못한다는 특징이 있다. 1. 핸들러 조회 💭핸들러 매핑을 통해 요청 URL에 매핑된 핸들러(컨트롤러)를 조..
우아한테크코스 레벨2에서 스프링부트를 활용한 미션을 수행하면서, 테스트 코드를 어느때보다 열심히 작성하고 있는 것 같다.하지만 테스트 코드에서 @Sql 을 사용하는 과정에서 문제를 마주하게 되었고,이를 @Sql 애노테이션의 동작 원리를 살펴보는 좋은 기회로 여겨 문제 상황과 학습 내용을 기록해보고자 한다. @Sql 애노테이션이란?마주한 문제에 대해 알아보기 전에우선 Sql 애노테이션이 무엇인지부터 알아보자. 정확한 설명을 위해 공식문서의 말을 빌려보자면, ‘@Sql 애노테이션은 통합 테스트 환경에서 주어진 데이터베이스에 실행시키기 위한 SQL의 scripts 또는 statements를 구성하기 위한 목적으로 테스트 클래스 또는 테스트 메서드에 붙여주는 애노테이션’ 이라고 한다. 간단히 @Sql 애노..