본문 바로가기

프로젝트44

[Key Word 개발기] AWS 배포 - jenkins 지속적 배포 구축하기 간단하게 우리 협업프로젝트 CI/CD구조가 이러하다. 이번 게시글에서는 jenkins를 사용해서 어떻게 지속적 배포를 구축했는지 설명하겠다. 앞서 게시글에도 이야기했지만 github actions에서 우선 pr코드에 대한 검사를 진행한다. 그래서 오류가 발생시 병합을 불가능하게 하였다.(다만 지금 우리조는 restdocs관련해서 에러가 나고 있지만 그냥 파일이 없다는 간단한 문제라서 이부분은 pass하고 진행중이다) 이후 병합하면 webhook에서 jenkins로 이벤트 발생했다고 알려준다. 그럼여기서 jenkins는 이제 jar파일을 생성하여 ec2인스턴스에게 전달하여 스프링부트 어플리케이션을 실행하여야한다. 젠킨스에서 잡을 생성하는 방법에는 두가지가 있다. 1. 프리스타일 젠킨스에서 기본틀을 정해주고.. 2024. 1. 19.
[Key Word 개발기] AWS 배포 - Github WebHook과 Jenkins 간단하게 우리 협업프로젝트 CI/CD구조가 이러하다. 이번 게시글에서는 github webHook과 jenkins를 어떻게 연결하는지 설명할 것이다. 일단 GitHub에서 PR을 올리면 Github Actions에서 정상적으로 빌드가 되는지, 테스트코드가 통과하는지 검사해준다. 만약 에러가 나온다면 설정한 브랜치로 merge가 불가능하게 해놨다. 그래서 만약 모든게 다 정상적으로 작동한다면 Webhook에서 Jenkins쪽으로 이벤트를 보낸다. 여기서 Webhook이란 특정 애플리케이션이 다른 애플리케이션으로 이벤트 정보를 실시간으로 제공하기 위한 방법이다. 젠킨스 쪽에서는 외부에 Webhook의 이벤트를 보낼 수 있는 url를 열어두고 Webhook에서 이벤트가 발생하면 해당 정보를 제공한다. 이후 j.. 2024. 1. 19.
[Key Word 개발기] AWS 배포 - EC2에서 docker 활용한 jenkins 설치 간단하게 우리 협업프로젝트 CI/CD구조가 이러하다. 이번 게시글에서는 ec2에서 docker를 활용해서 어떻게 jenkins를 설치하는지 설명할 것이다. 다만 aws ec2 생성은 되어있다는 전제하에 진행하는 것이다. Jenkins 도입한 이유 다양한 CI/CD 도구가 있지만 Jenkins를 선정하였다. 그 이유는 우리 팀은 CI/CD를 잘 아는 팀원들이 없다. 그래서 생태계가 넓고 레퍼런스가 많은 도구를 사용하는 것이 좋다고 생각했다. 래퍼런스가 많으면 초기 학습 비용도 적게 들고 이슈가 발생했을때도 비교적 쉽게 해결가능하기 때문이다. Docker를 활용 EC2에 docker를 활용해서 Jenkins를 설치하였다. 그 이유는 jenkins를 직접 설치한다면 신경써야하는 환경설정들이 정말 많다. 그러나.. 2024. 1. 16.
[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.
728x90