본문 바로가기

프로젝트/협업 프로젝트(2023.12.18-2024.01.25)20

[Key Word 개발기] AWS 배포 - Github Actions 어쩌다보니 담당하게된 배포... 2주일정도 공부했지만... 사실 뭔말인지 모르고 대충 적용해봤었다...개인 레포에다가... 그래서 맨처음 1주일은 이걸 왜 이렇게 하는데?? 였지만 다행히 2주차 정도 되니까 아 그렇구나..정도까지 가게 되었다. 협업프로젝트 배포라서 걱정이 많았는데 다행히 성공하여서 천천히 어떻게 했는지 기록하려고 한다. CI / CD + DB 간단하게 배포 방식과 db를 어떻게 하였는지 이미지로 보여주자면 설명하자면 1. Github Actions를 통해서 PR올린 코드가 build(+test) 할때 에러가 없는지 확인한다. (만약 에러가 나온다면 merge못하게 설정가능하다) 2. 에러가 안나와 merge를 진행하게 되면 Github Webhook에서 jenkins쪽으로 알림을 보낸다.. 2024. 1. 16.
[Key Word 개발기] Aws S3 + CloudFront (cf. lambda) 협업 프로젝트에서 회원 프로필 이미지를 저장해야하는 기능을 구현해야했다. 그래서 어처피 배포도 AWS할 거고 그럴꺼면 S3을 이용하자고 했다. 사실 개인프로젝트에서 S3를 구현해본적이 있어서 그렇게 큰 거부감??은 없었다. 다만 단순하게 S3를 도입하기에는 너무 간단하다고 생각해서 관련된 기능이 없는지 찾아보았다. 그래서 찾은게 lambda와 cloudfront였다. lambda 간단하게 lambda에 대해서 말하자면 어떤 이벤트(트리거)를 설정하면 내 서버가 아니라 AWS서버에서 대신일을 처리해준다. 그래서 이미지사이즈는 다양하기 때문에 기준을 정하여 s3에 저장할때 lambda에서 이미지 리사이징 작업을 하려고 했다. 다만 적용하지 않았다. 첫번째 이유 관리포인트가 늘어난다. lambda를 이용하려면.. 2024. 1. 8.
[Key Word 개발기] @WebMvcTest 없이 테스트?? 부트캠프 협업프로젝트하면서 멘토님께 일주일에 한번씩 멘토링을 받는데 내 테스트 코드에 대한 멘토를 해주셨다. 해주시면서 하신 말씀이 이해가 안되어 찾아보니 내가 정말 아무생각없이 테스트코드 공장마냥 짜내고 있었구나...생각이 되었다. @WebMvcTest 없이 테스트 해봐유?? 멘토님께서 mocking테스트를 추천하지만 @SpringBootTest, @DataJpaTest, @WebMvcTest의 경우 어플리케이션을 실제로 띄운후 테스트하는 방식이기때문에 단순히 mocking만으로 테스트하는게 성능,시간 문제를 해결하고 테스트하고자하는 목적들을 달성할 수 있다. 라고 말씀하셨다. 엥?? 저 어노테이션 없이 어떻게 하라는 거죠..?? 테스트코드에는 저런 어노테이션이 필수 인거아닌가??라는 생각이 머리속으로.. 2024. 1. 6.
[Key Word 개발기] Flyway 적용기 부트캠프 협업프로젝트에서 flyway를 적용하기로 했다. 개인프로젝트때도 적용해보기도 했고 특히 협업프로젝트때 적용하면 좋을 것같아서 팀원들에게 적용하자고 말하게되었다. Flyway?? 이미 블로그에 flyway에 대해서 적은 적이 있다. 그럼에도 우리 프로젝트에 왜 flyway를 적용했는지 정리하고자 한다. 일단 flyway란 데이터베이스 마이그레이션 툴로서 데이터베이스 변경사항을 추적하고, 업데이트나 롤백을 보다 쉽게할 수 있도록 도와주는 도구이다. 데이터 마이그레이션이 필요한 이유는 프로젝트를 진행할때 위 그림처럼 여러 환경에서 데이터베이스가 존재한다. 팀원들이 각자 로컬에서 데이터베이스를 이용하기도 하고, CI, Test 할때도 각각 별도의 데이터베이스를 이용한다. 팀원들이 각자 로컬에서 개발을 .. 2024. 1. 5.
[Key Word 개발기] CI/CD 어떻게 할것인가... 협업프로젝트하면서 부트캠프 쪽에서는 CI/CD까지 완성하기를 바라시는 것같다. 물론 하면 좋긴한데... 나뿐만 아니라 우리 백엔드 팀원들이 배포를 해본 경험이 없어서... 잘할 수 있을지 걱정 가득.. 일단 어떻게 CI/CD를 할 것인지 구조는 대충 정해졌다. CI & CD CI는 GitHub Actions를 이용하기로 했다. CD는 Jenkins를 이용한다. CI에서 GitHub Actions를 이용한 이유는 PR과정에서 테스트코드가 작동되는지 확인하는 점이 프로젝트 배포과정에서 오류같은 이슈를 많이 줄것이라고 생각했다. CD에서 Jenkins를 이용한 이유는 처리속도가 Jenkins가 더 빠르다 사실 우리 조가 무중단 배포까지 구현할 수 있을지는 모르겠다. 다만 무중단 배포를 안할 경우 배포되는 시간.. 2024. 1. 2.
[Key Word 개발기] Spring RestDocs 와 Swagger 같이 사용하기 원래 협업 프로젝트때 Spring RestDocs를 통해서 api 문서를 만들려고 했다. 그런데 귀찮은 부분이 있었다. 첫번째 adoc파일을 직접 디자인??해야된다는 점 두번째 문서가 추가되면 asciido 문서를 일일이 편집해야한다는 점 세번째 swagger처럼 직접 테스트 해볼 수 없다는 점이다. 거기다가 팀원분들이 대부분 swagger는 해보셨는데 RestDocs는 처음 사용하시는 것같았다...사실 나는 둘다 사용안해봄... 그런데 찾아보니 Spring RestDocs랑 Swagger를 같이 쓸 수 있는 방법이 있었다. Swagger UI + Spring Rest Docs 위에가 전체적인 흐름이다 1. 기존처럼 테스트코드를 통해 docs문서를 생성 2.docs문서를 openApi3스펙으로 변환 3... 2023. 12. 30.
728x90