주간로그 3 - 내가 만든 서비스 배포하기

kukjunLEE·2023년 1월 21일
1

Weekly Log(2023)

목록 보기
3/19
post-thumbnail

지난 주 회고


졸업작품 완성 후 배포하기, CICD 진행하기

내가 직접 만든 서비스의 오류를 수정하고 배포하는 작업을 진행했다.

프로젝트에 필요한 서버는 Frontend Server, Backend, Server 두 개이고, 데이터베이스는 Postgresql을 사용했는데, 이 서비스를 배포환경으로 설정하기 위해서 AWS의 EC2 두개, RDS를 사용했다.

프리티어로 이용할 수 있는 EC2, RDS는 각각 하나씩이지만, Frontend, Backend 서버를 따로 두고 서로 통신을 하게 하기 위해서는 어쩔 수 없는 선택이었다 :(



아직까진 괜찮은 비용 :) 하지만 비용관리를 잘 하자
AWS 비용



AWS 사용 시 주의할 점은 내가 사용하지 않는 IP를 열어두지 않아야 하고, pem 키의 유출이 일어나지 않도록 해야하는 점이다. :)

이 두 가지를 지키지 않는다면, 인터넷에 흔하게 돌아다니는 AWS 요금 폭탄 블로그 글의 주인공이 내가 될수도 있다. :(
그런 블로그 컨텐츠는 업로드하고 싶지 않다.



원래 CICD까지 진행하고 싶었지만, 개발환경과 배포 환경은 너무나도 달랐다.
그래서 생각하지 못했던 일들을 추가로 진행했는데, 그 내용들은 다음과 같다.

  • 배포 환경을 위한 EC2 초기 설정 - frontend(vue), backend(springboot)
  • 배포 환경에 사용할 RDS 초기 설정
  • 배포 환경에서 사용할 설정파일 생성
  • 배포 환경 CORS 설정
  • EC2, RDS 인바운드 규칙 적용

이런 일들을 추가로 진행했는데, 이런 작업을 진행하면서, 내가 작성한 코드들이 어떻게 배포 환경으로 옮겨지고 실행되는지 직접 경험할 수 있었다.

시간은 많이 걸렸지만 유익한 경험이라고 생각하고 있다 😃




이력서 보강

이력서를 보강해야겠다! 고 저번주에 생각했었는데, 내일까지 내가 만든 프로젝트를 설명할 수 있는 글을 작성하도록 하겠다. 먼저 초기 프로젝트로 부터 보강한 내용을 작성하고 앞으로 기능적으로 추가할 부분, 기술적으로 추가할 부분으로 나누어서 계속 보강해 나가면서 이러한 내용들을 이력서에 하나하나 담을 예정이다. :) 재미있을 것 같다.



미리 적어보자면 지금까지 한 일들을 정리하면 다음과 같다.

  1. Backend Entity 쪽에서 @Data를 이용해서 Setter를 열어두고 서비스에서 이 코드들을 사용했는데, @Data를 빼고 Setter 사용을 하지 않았다. 그리고 로직 중 변화를 줄 수 있는 부분은 메서드 형태로 빼서 다루었다.

  2. Entity의 메서드들 중 연관관계가 있는 코드들을 Service에서 호출해서 작성했는데, 이제는 Entity에서 서로 영향을 주는 메서드들을 Entity가 직접 사용하도록 변경했다. 그래서 원래의 코드는 Service에서 Repository에서 Entity를 불러와서, DTO를 통해 받은 값으로 Entity 값들에 대해서 직접 변경하고 지우는 작업을 진행했다면, 지금은 Service에서는 Repository에서 Entity를 불러와서 DTO를 통해 받은 값으로, Entity의 메서드를 실행하도록 변경했다.

  3. Spring Data JPA를 사용하면서 많은 Repository의 Method들을 Native Query로 작성했었는데, 이러한 코드를 수정해서 Spring Data JPA로 충분히 작성될 수 있는 부분의 코드는 그렇게 작성하도록 수정했다. 그리고 SpringDataJPA로 표현할 수 없는 로직은 Native Query가 아닌 QueryDSL을 통해서 작성했다.

  4. JWT 검증 절차를 Filter에 적용하다보니, WebConfig에서 적용한 CORS 설정이 적용되지 않아 명시적으로 CORS 설정을 해주게 되었다. JWT 검증 절차는 Filter에서 처리할 부분이 아니라 Interceptor에서 적용할 영역이라고 판단해서, JWT 검증을 Interceptor로 이동했다.

  5. 이전에는 Test Code 없이, Postman, frontend 와 직접 연결해서 테스트했는데, 이번엔 단위테스트부터 통합테스트까지 작성해서, frontend 없이도 대부분의 메서드가 정상적으로 동작하는지 테스트해볼 수 있었다.

:) 생각보다 오래걸리고 힘든 과정이었는데 적고나서 보니, 몇줄 안나온 것 같다. 그리고 이번에 만들면서도 고칠 부분을 더 찾아버렸는데 ... ㅎㅎ 이번에 이력서를 완성하고 또 보강하는 절차를 진행해야겠다.




앞으로


졸업작품 CICD 환경 구축하기

구현한 Backend를 CICD를 구현해서 동작하도록 설정할 것이다.
계획은 Github Action을 이용해서 구현할 예정이고, 다음주 월, 화 안에 끝내려고 한다.




이력서 보강 + 제출

이제 이력서에 내 프로젝트를 잘 정리해서 보강한 후 이력서를 제출하도록 하려고 한다. 이 전에 프로젝트의 경우 많은 코드 상 허점이 많이 보였고, 배포도 진행하지 않아 사람들이 확인할 수 없었고, 프로젝트를 설명하는 글도 빈약했다. 이러한 부분을 다 보강한 후 이력서를 제출하고자 한다. 그리고, 이전에 진행했던 코딩테스트 결과에 따라 금손, 은손 뱃지가 원티드에 부여되기에 1월 30일 이전까지는 천천히 알아보다가 30일 이후에 지원을 하고자 한다! :)

profile
Backend Developer

0개의 댓글