728x90
문제 상황 정의 생산성 저하 우리 팀에서는 땅콩 개발 초기에, 테스트 코드를 작성할 때 위와 같은 init-test.sql 파일을 사용했었다. 초반에는 위와 같이 사용함으로 인해 테스트 코드 작성 시에 굉장히 길어질 수 있는 데이터 초기화 로직을 제거할 수 있었다.미리 init-sql에 정의되어 있는 값만 가져다가 사용하면 되어서 편리하다고도 생각했다. 하지만 위 방식에서는 문제점이 있었다. 데이터가 얼마 없을 때는 편리할 줄 알았으나테스트 코드에서 사용할 데이터를 참조할 때 매번 init-test.sql 파일에 접근해서 사용할 데이터의 ID값을 확인해야하는 것이 굉장히 불편했다. 이로 인해 테스트 코드 작성의 생산성이 저하 되었다. 가독성 저하 생산성 저하로 인해서 잘 사용하지 않게 되자, 결국 테..
고민의 시작점다수의 사람들이 서비스를 이용하는 우아한테크코스의 데모데이 직전,모니터링이 수월하게 작동할 지 확인하는 도중 다른 크루원과 기존 로깅 방식에 대해 이야기를 나누는 과정에서 현재 로깅 방식에 아쉬움을 느끼게 되었다.때문에 로깅 방식을 개선해보고자 몇 가지 고민을 했고, 그 과정과 결과를 기록해두고자 한다. 현재 Logging의 문제점 현재 우리 땅콩 서버의 로그는 다음과 같은 형태로 남겨지고 있다.Request, Response에 대한 정보를 남기고 있는 효율적인 로깅 방식으로 보여진다. 하지만 여기에 하나의 문제점이 있다. 서버에 동시에 요청이 마구잡이로 들어왔을 때, 특정 로그를 어떻게 추적하여 확인할 수 있을까?어떤 요청에서 예외가 발생했을 때, 빠른 속도로 어떤 요청에서 예외가 발생..
사용기술AWS EC2Git ActionsNginxSpringboot/Java AWS 보안 그룹 및 권한 제한으로 인한 고민ec2는 우테코에서 기본 제공해주는 VPC, Subnet, 보안그룹을 사용해야했으며, 여러 기능에 대해서 권한 제한이 걸려있었다. 우아한형제들 계정의 IAM 사용자 계정이기 때문에 혹시라도 AWS 사용에 미숙한 크루원이 pem키 같은 중요한 정보를 Github에 업로드하는 등의 실수를 하게 되면, 회사에 큰 재산적 피해가 갈 수 있기 때문인 것 같았다. AWS IAM 에서 SecretKey를 발급받을 수 있는 권한이 없었고, EC2 접근도 80,443 포트만 전체 접근으로 열려있었고 ssh 프로토콜 통신을 위한 22번 포트는 우테코 캠퍼스 내부 LAN에 연결된 상태로만 접근 가능했다...
이 글은 김영한님의 스프링 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 애노..
외부 API 연동하기우테코에서 방탈출 미션을 수행하면서, 방탈출 예약 결제 처리에 Toss 결제 API 를 연동하게 되었다. 방탈출 미션은 방탈출 예약 웹 서비스를 만드는 미션으로 JS/CSS/HTTP 기반 웹 클라이언트 와 Springboot/Java 기반 백엔드를 함께 개발한다. 하지만 백엔드에서 고려할 부분에 대한 흐름을 기록하고싶기 때문에 이번 내용은 클라이언트 측이 아닌 백엔드 측의 기준으로 설명한다. 또한 Toss API 연결이라는 하나의 작업보다는 외부 API 연결이라는 큰 틀에 집중해보았다는 점을 참고해서 글을 읽으면 도움이 될 것이다. 또한 이번에 다루는 내용은 실제 결제까지의 과정이 아니라 학습을 위한 과정이기 때문에 토스에서 지원하는 '테스트'용 키값 등을 사용했다는 점도 참고바란다...