Project
-
Github Actions CI 구성Project 2023. 8. 22. 22:51
이번 글에서는 초기 프로젝트 세팅을 하며 진행한 Github Actions의 CI 구성 작업 과정에 대한 내용을 작성하겠습니다. 이번에 세팅을 진행하며 가장 신경 쓴 부분이 바로 github의 secrets를 이용하여 application-prod.yaml 파일의 변수들을 환경변수로 주입시키는 부분이었습니다. 예전 프로젝트에서는 방법을 찾지 못하여 미리 작성한 application-prod.yaml 파일을 base64로 인코딩 시킨 값을 직접 github의 secrets으로 등록하여 진행했는데 이러한 과정에서 application-prod.yaml 파일이 변경이 생기는 경우 매번 인코딩과 secrets 수정을 진행하는 부분이 불편하다고 느꼈기 때문에 이번에는 직접 환경변수를 넣을 수 있는 방법으로 진행하..
-
mono-repo / multi-module 프로젝트에서 spring 자동 설정 이용하기Project 2023. 8. 22. 00:49
이번 글에서는 새로운 프로젝트를 진행하며 자동 구성을 이용해 여러 모듈에서 공통으로 쓸 수 있도록 설정한 부분에 대해 정리하도록 하겠습니다. 현재 프로젝트 구조는 아래와 같습니다. gradle을 이용한 mono-repo / multi-module 형식의 프로젝트 구조입니다. live_feed | | - LiveFeedCommon | - LiveFeedCrawler | - LiveFeedParser | - LiveFeedSaver | - LiveFeedService 각 모듈별로 각각의 역할을 갖고 있는데 이때, LiveFeedCommon 모듈의 경우 다른 모듈에서 공통으로 사용하는 부분을 묶어서 관리하고 싶었기 때문에 Common이라는 이름을 갖는 모듈로 만들었습니다. 대부분의 다른 모듈에서 모두 kafk..
-
AWS S3 이미지 저장 및 삭제와 DB로직 트랜잭션 분리Project 2023. 7. 27. 03:11
트랜잭션 분리 최근에 Real MySQL 이라는 책을 읽으면서 트랜잭션에 대한 내용을 읽었는데, 많은 지식들을 얻을 수 있었지만 그중 가장 크게 와닿았던 내용이 바로 트랜잭션의 범위를 최소로 해야 한다는 내용이었습니다. 특히 외부 API를 호출하거나 이메일을 보내는 등의 서비스를 하나의 트랜잭션으로 묶게 된다면 해당 트랜잭션을 수행하는 커넥션을 오래 갖게되고 이로 인해 데드락 등의 문제가 발생할 가능성이 올라가기 때문에 가능하면 트랜잭션의 범위를 좁히는 것이 좋다고 읽었고, 마침 프로젝트에 AWS S3에 이미지를 업로드 하거나 삭제하는 기능이 존재했었기 때문에 이번 기회에 트랜잭션 범위를 줄이도록 코드를 변경했습니다. 수정해야 하는 코드는 이미지를 업로드 하는 코드와 이미지를 삭제하는 코드였습니다. 해당..
-
사이드 프로젝트 백엔드 TB jenkins CI/CD 구축Project 2023. 3. 3. 00:57
시작하기 앞서... 이번에 새롭게 프로젝트를 진행하게 되었는데 처음 합류할 때 이번에는 반드시 직접 CI/CD를 Jenkins를 이용하여 구축하는 것이 목표였습니다. 프로젝트 직전까지 강의를 통해 Jenkins를 어느정도 익힌 후였고 실습을 통해 내것으로 좀 더 만들기 위해 프로젝트에 참여하여 CI/CD를 구축하게 되었습니다. 사실 아래 글이 절대 정답이 아니라 이번에 한 번 해보자는 마음으로 진행한 부분이 많아서 좀 더 좋은 방법이 많을텐데 아직은 모르는 부분이 많아서 그냥 이렇게 했구나 정도로만 생각해주시면 감사하겠습니다. 아직은 많이 부족한 상태입니다... 혹시 더 좋은 방법이 있다면 언제든지 댓글 달아주시면 감사하겠습니다. 피드백은 언제나 환영입니다 ㅎㅎ 그러면 지금부터 직접 경험한 TB 서버에서..