전체 글 58

asciidoc를 통해 생성된 html이 jar에 포함되지 않은 이유는 무엇일까?

문제 상황 현재 진행하고 있는 프로젝트에서 Restdocs를 사용해 API문서화를 진행하도록 결정했습니다. ./gradlew clean build 명령어를 통해 API 문서가 지정한 경로에 제대로 생성되는 것을 확인했었습니다. build된 jar 파일을 EC2에 전달 후 nohup 명령어를 통해 WAS를 띄운 후 http://{ec2주소}/docs/index.html 을 했을 때 404 Not Found 응답이 났습니다. 무엇이 문제일까? 문제의 build.gralde plugins { id 'org.asciidoctor.jvm.convert' version '3.3.2' } configurations { asciidoctorExt } dependencies { implementation 'org.spr..

개발일지 2023.11.03

[Spring] Github Actions 테스트 시 credential 값 설정하는 방법

프로젝트 환경 : Java, Spring SVN : Github 문제 상황 : Sonar Cloud의 Actions 동작 중 문제 발생 문제 발생 상황 프로젝트를 진행하며 이미지 파일을 AWS의 S3 버킷에 올려하는 상황이 생겼습니다. S3에 업로드하기 위해서는 S3의 버킷 이름, IAM의 ACCESS-KEY, SECRET-KEY가 필요합니다. 앞서 언급한 정보들은 github에 올라가는 경우 악용할 수 있어 보통 credential yaml 파일을 생성하고, github에는 올리지 않고 로컬, 배포 환경 서버에 yaml 파일을 두고 다음과 같이 yaml 파일을 include 해 사용합니다. spring: profiles: active: local # 기본 환경 include: credential # 비..

개발일지 2023.10.26

AWS 배포 - AWS Code Deploy를 사용한 배포 (Github Actions)

프로젝트 진행 중 Code Deploy를 적용할 일이 생겨 해당 부분 관련 하여 hands-on session 느낌으로 작성하고자 합니다. 해당 글은 다음 환경에 대해 다룹니다. Framework : Spring Language : Java CodeDeploy : Github Actions 글에 앞서 Code Deploy의 개요도는 다음과 같습니다. [ 변경 감지 ] | Trigger가 걸린 branch에 변경 사항이 생기면 Github Actions가 작동 [ 파일 S3 전송 및 저장 ] | Github Actions에서 전달하고자 하는 파일들을 S3에 전송한다. (zip 파일도 가능) [ 배포 명령 ] | Github Actions에서 Code Deploy에게 배포를 진행하라고 명령을 내린다. [ 빌..

AWS 2023.10.21

Spring, 그리고 Test

개요 개인적으로 개발을 함에 있어 테스트 코드는 매우 중요하다고 생각합니다. 제가 테스트 코드를 중요하게 생각하는 이유는 다음과 같습니다. 개발자가 작성한 코드에 대한 검증 프로젝트가 작거나 클래스가 맡은 기능이 적은 경우에는 그 역할들이 정상적으로 돌아가는지 파악하기 쉽습니다. 하지만 프로젝트가 점점 커질수록, 단일 클래스의 역할이 늘어날 수록 그 역할들이 정상적으로 돌아가는지 파악하기 어렵습니다. 테스트 코드는 프로젝트의 규모에 상관없이 개발자가 작성한 코드가 개발자의 의도와 동일하게 흘러감을 보장할 수 있습니다. 협업 프로젝트의 경우 혼자 진행하는 경우는 드뭅니다. 다른 개발자와 팀을 이루어 개발을 진행하는데 다른 개발자가 작성한 코드에 대해서 어떠한 기능을 하는 지 테스트 코드를 통해 쉽게 파악할..

Spring 2023.10.11

클론코딩 최종 회고

클론 코딩 Project : CREAM (KREAM 클론 코딩) 프로젝트 진행 기간 : 2023.08.28 ~ 2023.09.22 GitHub - prgrms-be-devcourse/BE-04-CREAM: [앨런팀] KREAM 클론 코딩 [앨런팀] KREAM 클론 코딩. Contribute to prgrms-be-devcourse/BE-04-CREAM development by creating an account on GitHub. github.com 들어가며 한달동안의 프로젝트를 진행하며 많은 것들을 배웠고, 많은 것들을 깨달았던 클론코딩 프로젝트였다. 회고를 통해 배웠던 것, 깨달은 것을 정리하고 기록하고자 한다. Good Things Git-flow 도입 사실 Git-flow라는 개념을 처음 접했다..

회고 2023.09.25

클론 코딩 중간 회고

선정 도메인 Kream 도메인을 선정. 처음에 팀원들과 고려한 도메인은 쿠팡이다. 하지만 쿠팡의 경우 너무 많은 기능이 포함되어 있는 반면 (로켓 배송, 로켓 프레시...) 각각 주문에 대해서는 상대적으로 비슷한 기능들이 들어가는 것 같아 보였다. 팀원들과 협의 끝에 조금 어렵더라도 복잡한 로직을 가진 도메인인 크림을 클론 코딩하기로 결정. 잘한 점 [Git-flow 제정 및 branch rule 제정] 팀원들과 협업을 하기 때문에 보다 충돌이 덜 날 수있게끔, 그리고 해당 프로젝트의 경우 EC2에 배포를 하기로 결정. 이를 충족 시키기 위해 Git-flow 방식을 채택. 팀원들이 Git-flow에 대한 지식이 별로 없는 상태였고, 필자도 약하게 알고 있는 상태였기에 직접 임시 repo에서 연습 후 적용..

회고 2023.09.18

인프콘(INFCON) 2023 방문 후기

개발자가 되기로 한 이후부터 콘퍼런스에 종종 관심을 기울이고 있었습니다. 처음 참여했던 컨퍼런스는 AWS SUMMIT 2023 seoul이었고, 인프콘 2023이 두 번째였습니다. 참여하게 된 이유는 무엇인가? 대학원 생활 당시에 학회를 종종 다녔습니다. 학회를 가게 되면 다양한 연구를 했던 경험들에 대해 서로 나누고, 배우는 경험을 여러 번 했었습니다. 새로운 주제와 연구 인사이트를 얻을 수 있는 경험들을 자주 하며, 선순환의 경험을 했다 보니 학회, 콘퍼런스에 대해 관심이 많았습니다. 첫 번째로 참여했던 AWS SUMMIT 2023의 경우, 정말 좋은 콘퍼런스였습니다. 다양한 선배 개발자분들의 열정을 느낄 수 있었고, AWS에서 제공하는 서비스들을 어떻게 효과적으로 사용할 수 있는지 배울 수 있던 장..

회고 2023.08.15

Spring MVC - 요청과 관련된 사용법 정리

RequestMapping @RequestMapping("URL") Spring Controller를 사용할 때 특정 URL 경로에 대해 요청이 들어오는 경우 메서드가 실행할 수 있게 끔 매핑해 줍니다. /** * RequestMapping에 별다른 method를 지정하지 않는 경우 * 모든 HttpMethod 허용 * * 권장하지 않는 방식 */ @RequestMapping("/request-mapping") public String requestMapping() { log.info("requestMapping 실행"); return "ok"; } RequestMapping을 적용하고자 하는 메서드 위에 @RequestMapping 어노테이션을 기입해 주면 됩니다. 괄호 안의 "/request-mapp..

Spring 2023.07.06

백엔드 데브코스 4기 월간 회고 1편 - 모든 게 낯설다 그치만 재밌다!

📌 그동안 어떻게 지냈는가? 본격적인 글을 들어가기 앞서 합격 후기 및 앞으로 임하려는 다짐을 적어놓은 글을 확인하고 싶으시면 아래 링크를 클릭해 주세요! ➡️데브코스 합격 후기 바로가기 6월 1일부터 본격적인 과정이 시작되었습니다. 회사 및 모든 공동체가 그렇듯 OT부터 시작을 했습니다. 그도록 기다리던 과정이 시작하는 것이 마냥 신났던 하루 였던 것 같아요! OT때 가장 기억에 남던 말들 중 하나가 기억에 남는데요. 지금이 가장 재밌을 때다. 앞으로 더 힘들어 질 일만 남았다. 한달이 지난 지금 돌이켜 보니 진짜 저때가 제일 재밌었던 편했던 것 같아요. (그치만 재미는 한달이 지난 지금이 더 재밌어요!) 📌 PRE 팀 기간 NEW 팀 기간 데브코스에는 신기한 제도가 있었어요. 과정을 시작한 후 2주동..

회고 2023.07.05

Junit에서 TestInstance의 생명주기

Spring을 사용할 때 보통은 Junit을 사용해서 테스트를 실행하게 됩니다. 오늘은 테스트 코드 실행 시 어떠한 생명주기를 가지며 테스트를 실행하는지 알아보도록 하겠습니다. Test LifeCycle Of Junit @BeforeAll BeforeAll 어노테이션은 클래스에 정의된 모든 테스트를 시작하기 전에 실행하는 메서드입니다. BeforeAll 어노테이션이 붙은 메서드는 static 접근 제어자를 사용해야 합니다. @BeforeEach 각각의 테스트를 진행하기 전에 실행하는 메서드 입니다. BeforeEach 어노테이션이 붙은 메서드는 접근 제어자 static를 사용할 수 없습니다. @AfterEach 각각의 테스트가 끝난 후 실행하는 메서드입니다. Aftereach 어노테이션이 붙은 메서드는 ..

Spring 2023.07.03