분류 전체보기

단계별로 성장하자!
1. 테스트에 대해서 공부하게 된 계기 기존에는 테스트를 API 구현 완료 후 Postman으로 구동 확인 위주로 하였다. 테스트코드를 작성하는 방법도 몰랐고 중요성도 크게 몰랐었다. 하지만 이번에는 실제 서비스 해야하는 애플리케이션이고 서비스후에도 계속 수정사항이 발생할 것이기 때문에 테스트코드를 작성해놓지 않는다면 정말 힘들어질 것 같다는 생각이 들었다. 하지만 단위 테스트는 어떻게 하는 것인지? 단위 테스트와 통합 테스트의 차이가 무엇인지? 전혀 몰랐다. 따라서 단위 테스트 라는 책을 읽고 예시 상황을 정리해보며 생각을 정리해봤다. 2. 단위 테스트란? 정의 모듈이나 애플리케이션 내부에 있는 작은 코드 조각이 예상과 똑같이 동작하는지 검증하는 반복적인 행위 속성 - 프로그램의 작은 코드 조각 단위를..
1. 문제 상황 기존 코드 흐름 @Getter public enum ErrorCode { DUPLICATED_LONGIND("0101", 이미 사용중인 아이디(학번) 입니다.)"), ... public DuplicatedLoginIdException extends RuntimeException { public DuplicatedLoginIdException() { } } # SignupService public void signup(LoginReq req) { ... throw new DuplicatedLoginIdException(); } @RestControllerAdvice public class ControllerAdvice { @ResponseStatus(HttpsStatus.CONFLICT) ..
1. 문제 상황 사용자 수가 많지 않지만 배포하려는 물리 서버 컴퓨터의 성능이 그닥 좋지 않기에 혹시나 잘못되면 어떡하나라는 걱정이 계속 있었고 CPU, 메모리, Thread Pool을 계속 모니터링 할 수 있는 방법이 없을까? 라고 생각하여 찾아보다가 Spring Actuator, Micrometer, Prometheus, Grafana와 같은 키워드를 알게되어 공부하고 구축하게 되었다. 2. 문제 해결 ✏️ Spring Actuator Production을 운영환경에 배포할 때 Metric(지표), Trace(추적), Auditing(감사), 모니터링과 같은 필요한 기능을 매우 편리하게 사용할 수 있도록 해주는 라이브러리이다. Micrometer, Prometheus, Grafana를 매우 쉽게 연동..
1. 문제 상황 내가 만든 사이트에서는 아무래도 우리 학교 대학생을 상대로 하기 때문에 회원가입시 학번, 패스워드, 이메일을 입력한다. 이 정보는 개인정보 이므로 암호화 할 필요가 있다. 패스워드 같은 경우는 비교만 하면 되므로 단방향 암호화 알고리즘을 이용하는 PasswordEncoder의 도움을 통해 쉽게 암호화 하였는데, 학번이나 이메일은 정보로 사용하기 위해서는 복호화할 수 있어야 하므로 양방향 암호화 알고리즘을 사용해야 한다. 어떻게 동작하는지를 먼저 파악하기 위해 먼저 AES256에 대해서 공부하고 코드를 구성하였다. 2. 문제 해결 ✏️ AES-256 대칭키 암호화 알고리즘을 사용하자 AES(Advanced Encryption Standard) AES 암호화 알고리즘은 암호화 및 복호화에 동..
1. 문제 상황 실제 운영해야 하는 사이트를 개발하고 있기 때문에 보안적인 이슈들을 계속 생각하고 수정해 나가고 있다. 기존에는 예를 들어 마이페이지 정보를 얻어오는 Rest API를 /api/members/{memberId} 라고 설계하고 구현했다. 하지만 Https 프로토콜을 적용하더라도 path variable 또는 query parameter로 받는 데이터는 URI에 포함되어 암호화되지 않기 때문에 보안적으로 좋지 않을뿐더러 Jwt token 인증 방식을 사용하면 토큰에 사용자 식별정보가 들어있는데 굳이 클라이언트한테 다시 본인에 대한 키를 받을 필요가 없다고 생각을 했다. 2. 문제 해결 ✏️ HttpServeletRequest를 사용하자 HttpServletRequest를 사용하면 사용자의 H..
1. 문제 상황 컨테이너를 각자 띄우고 네트워크를 연결해주고 볼륨을 연결해주고를 반복하다보니 아래와 같은 생각을 하였다. MariaDB, Redis, Spring Boot Jar, Prometheus, Grafana 등의 컨테이너를 한번에 띄우고 업데이트할 수 있는 방법은 없을까? 그리고 각 컨테이너의 docker network를 손쉽게 연결하고 볼륨, 의존관계, 기타 환경설정 등을 하나의 파일에서 편리하게 설정하고 관리할 수 있는 방법은 없을까? 2. 문제 해결 ✏️ Docker Compose를 사용하자! Docker Compose란 다중 컨테이너 애플리케이션을 정의하기 위한 Tool이라고 보면 된다. ✏️ Docker Compose 주요 특징 1️⃣ 단일 호스트의 여러 개의 격리된 환경 Compose..
DevPoong
'분류 전체보기' 카테고리의 글 목록 (8 Page)