개요프로젝트를 진행하던 중 nginx를 이용하여 웹 서버를 만들면서 SSL/TLS를 적용한 방식을 설명한다.프로젝트의 서버 구조는 다음과 같다.netlify에 프론트를 배포하고 백엔드와의 통신을 위해 HTTPS를 적용하기로 했다!본론SSL/TLS(HTTPS 적용) 절차letsencrypt로부터 인증서를 발급받는다.발급받은 키(인증서)를 nginx에 적용한다.nginx에 스프링 부트로 리버스프록시를 설정한다.인증서를 발급받기 전에 해당 인증서를 발급받기 위한 준비를 먼저 하자!0. 인증서 발급 전 준비 (nginx 실행)sudo docker run -d --name nginx --network {네트워크명} -p 80:80 -p 443:443 \ -v /home/ubuntu/conf:/etc/ngin..
spring
개요프로젝트를 진행하던 중 게시글의 요청이 연속으로 두 번 오면 게시글이 2개 작성되서 이전에 만들어둔 로직과 충돌하는 일이 발생했다.기존의 로직은 현재 진행중인 게시글이 있다면 더이상 게시글이 작성되지 않도록 했지만 연속으로 들어오는 요청을 방지할 방안이 없었다.즉, 2개의 요청이 들어왔을 때, 진행중인 게시글의 존재 여부를 체크를 2개의 요청이 모두 넘어가면 2개의 게시글 모두 작성된다는 문제가 발생한다.문제의 코드@Override public WantedResponseDTO createWanted(WantedDTO wantedDTO, MultipartFile mainImage, MultipartFile signature) throws IOException { UserEntity u..
개요 프로젝트를 진행하던 도중 Spring JPA를 사용해서 데이터베이스 테이블을 일대다 관계를 만들어야 했지만 방법을 몰라 알아보고 만든 것을 작성하겠다. 먼저 Spring JPA는 자바에서 사용하는 객체의 개념과 데이터베이스에서 사용하는 테이블간의 다른 차이점을 해소시켜서 매핑해주는 API이다. 즉, JPA가 하고자하는 방향은 객체지향적인 방법으로 데이터베이스를 만드는 것이다. 따라서 데이터베이스 테이블의 관계도 객체지향적인 개념으로 접근해야 했지만 이해하기가 정말 어려웠다. 연관관계 단방향과 양방향 먼저 JPA에서 테이블의 연관관계를 만들어주는 방법은 단방향과 양방향으로 나뉜다. 단방향 class A{ private B b; } class B{ private int number; } 단방향 : 객체..
원인 서비스 계층의 테스트를 작성하면서 assertJ로 테스트를 작성했다. Service계층은 DAO에 종속되어 메소드를 사용하기 때문에 DAO를 통해서 새로 만들어진 객체를 삭제해주어야 했고 DAO를 통해서 작업을 수행한다. 따라서 Service의 단위 테스트는 DAO에 종속되어 있었고 DAO 빈을 가져와서 일일히 값을 삭제하면서 테스트를 진행했다. 이런 불편한 점을 제거하고 단위 테스트가 DAO에 종속되지 않도록 만들기 위해서 Mockito 프레임워크를 적용해서 DAO에 대한 Mock 객체를 만들어 사용했다. @SpringBootTest public class AuthServiceTest { private UserDTO user1; private UserDTO user2; private UserDTO..