본문 바로가기

분류 전체보기

(83)
[패스트캠퍼스] 패스트캠퍼스 백엔드 개발 부트캠프 5기 프로젝트 회고 3월부터 시작해서 벌써 7개월이 지나 마지막 날이 되었습니다. 짧다고 하면 짧고, 길다면 길 수 있는 시간이 지났습니다. "10월이 되면 조금 성장해 있을까?"라는 생각을 하면서 부트캠프에 참여했던 거 같습니다. 7개월 동안 부트캠프에서 진행했었던 프로젝트의 과정을 기록해보려고 합니다. 첫 번째 프로젝트 첫 번째 프로젝트는 개인 프로젝트였습니다. Java만을 이용하여 콘솔로 입력을 받고, 콘솔에 출력을 하는 "스마트 스토어"를 만드는 프로젝트였습니다. 이 프로젝트에서는 List, Map, Set과 같은 컬렉션 프레임워크의 사용이 금지되었습니다. 즉, 사용할 거면 직접 구현해서 사용했던 프로젝트입니다. 평소에 편리하게 그냥 가져다 쓰던 List, Map, Set 등 편리한 컬렉션들이 어떻게 작동되는지 느껴..
JackSon DTO 역직렬화 파헤치기 (JackSon과 Getter) 🖥️ 사용한 기술 버전 확인 SpringBoot: 2.7.15 JackSon: 2.13.5 Lombok: 1.18.28 🤨 분석을 해보기로 한 이유 Controller에서 Json에서 DTO로 역직렬화를 할 때, @NoArgsConstructor + @Setter가 있으면 역직렬화가 되는지 알고 있었습니다. JackSon의 내부 코드를 모두 까보지 않으면 모르지만, 개발하며 마주한 몇 가지 생각지 못한 케이스가 있어서 다뤄보려고 합니다. 추가적인 말이 없을 때까지는 아래의 HTTP 요청과 Controller를 사용했을 때의 결과입니다. POST http://localhost:8080/test Content-Type: application/json { "testString": "테스트", "testInte..
[Spring | LetsEncrypt] Http 서버를 Https로 바꿔보자 1. 문제 프론트엔드 팀과 협업을 위해서 API 서버를 개발하고, AWS LightSail을 사용해서 서버를 배포했습니다. 클라이언트 서버가 띄워지기 전까지는 로컬에서 작업을 해서 몰랐지만, 띄우고 나서 확인해 보니 통신에 문제를 겪었습니다. 클라이언트 서버는 https로 배포가 되어있고, 개발 서버는 http로 배포가 되어 있어 두 서버 사이의 통신에 문제가 발생했습니다. 2. 해결 (1) SSL 인증서가 필요하다! 첫 번째로 HTTPS로 배포를 하기 위해서는 CA의 인증을 받은 SSL 인증서가 필요합니다. 이 인증서는 보통 비용을 지불하고, 받아서 사용합니다. 하지만 저희는 돈이 없기 때문에! 무료로 SSL 인증서를 발급 받을 수 있는 Let's Encrypt를 사용했습니다. 무료라는 특징도 있지만..
[Spring | AWS EC2] AWS EC2에 @Schedule 기능 적용 시 시간 이슈 1. 문제 매일 00시 00분마다 작동되는 스케쥴러를 구현하기 위해서 다음과 같이 코드를 작성했습니다. @Scheduled(cron = "0 0 0 * * *", zone = "Asia/Seoul") @Transactional public void surveyScheduling() { log.info("[{}] 스케쥴러 작동 설문조사 데이터 정리", LocalDateTime.now()); LocalDate now = LocalDate.now(); List surveys = surveyRepository.findAllByStatusIsNot(SurveyStatus.REVERT); for (Survey survey : surveys) { if (isEnd(survey.getEndDate().toLocalDa..
[네트워크] HTTPS와 SSL/TLS HTTPS는 애플리케이션 계층과 전송 계층 사이에 신뢰 계층인 SSL/TLS 계층을 넣은 신뢰할 수 있는 HTTP 요청을 말합니다. 1. SSL/TLS (Secure Socket Layer, Transport Layer Security Protocol) SSL은 1 버전부터 시작해서 2, 3 그리고 TLS 1.0, TLS 1.3까지 버전이 업그레이드되며 마지막으로 TLS로 명칭이 변경되었지만, 보통 SSL/TLS로 불립니다. SSL/TLS는 전송 계층에서 보안을 제공하는 프로토콜입니다. 클라이언트와 서버가 통신할 때 이 프로토콜을 통해서 제3자가 메시지에 접근할 수 없도록 해줍니다. (인터셉터 방지) SSL/TLS는 보안 세션을 기반으로 데이터를 암호화하며 보안 세션이 만들어질 때 인증 메커니즘, 키 교..
[패스트캠퍼스] 패스트캠퍼스 백엔드 개발 14주차 회고 저번에 9주 차 회고를 작성했었는데, 벌써 5주가 지나서 14주 차가 되었습니다. 허허 가볍게 회고록을 작성해보려고 합니다. 🙋🏻‍♂️ Database/Spring 실시간 강의 시작 저번 Java 수업이 끝나고 이제 Database와 Spring 실시간 강의를 시작했습니다. 혼자서 Spring 공부해 볼 때 최주호 강사님이 운영하는 메타코딩이라는 유튜브 채널에서 공부를 한 적이 있었는데, 이번 Spring 실시간 강의 강사님으로 오셔서 약간 기대가 되었습니다. 지금 벌써 강의를 시작한지 몇 주가 지났는데, 개인적으로 실시간 강의 만족도는 매우 높습니다. 모르고 넘어갈만한 내용들을 자세하게 알려주셨습니다. 특히 그림으로 그리면서 적절한 예시를 항상 들어서 설명해 주시는데 이 부분이 만족도가 굉장히 높았습니..
Github에 잘못 올라간 .idea 폴더 지우기 처음에 .gitignore 설정을 잘못해 줘서 쓸모없는 .idea 폴더가 올라갔다. 😅 (1) 터미널에 명령어 작성 git rm --cached -r .idea 원격 저장소(깃허브)에 저장되어 있는 .idea를 삭제할 수 있는 명령어입니다. 로컬 저장소에 있는 .idea은 삭제되지 않습니다. (2) 삭제 상태 확인해보기 원격 저장소에서 삭제를 원하는 .idea을 삭제했습니다. 이제 이 변경 사항을 Commit으로 작성해서 Push 해주면 됩니다. (3) Commit 작성 후 Push git commit 명령어를 통해서 커밋 메시지를 작성한 후 origin 저장소에 push 했습니다. (4) 원격 저장소 확인 .idea 폴더가 정상적으로 삭제된 것을 확인해 볼 수 있습니다.
@DataJpaTest Rollback 후 Id 초기화 안됨 1. 문제 Hibernate를 사용해서 간단하게 Customer 객체를 디비에 저장하는 save()와 모든 유저를 조회하는 findAll() 그리고, 단일 조회할 수 있는 findById()를 만들어서 테스트 중에 있었다. @Import(CustomerRepository.class) @DataJpaTest class CustomerRepositoryTest { @Autowired private CustomerRepository customerRepository; @Test public void findById_test() { // Given Customer customer = Customer.builder() .name("코스") .tel("0101111") .build(); customerReposit..