본문 바로가기

분류 전체보기

(166)
[230717] [미니] 모여봐요 인생네컷 CI/CD 구성 (3) Git Web Hook 설정 💬 Git Repositroy에 이벤트가 발생 시 Jenkins으로 메시지를 보내기 위해 설정 1.Git Webhooks 설정 페이지로 이동 Git Repository Of Application -> Settings -> Code and automation -> Webhooks -> Add webhook 2.Git Webhooks 설정 Payload URL: https://Jenkins domain:Jenkins port/github-webhook/ Content Type : application/json Which events... this webhook? : Just the push event select Active Check 3.Git Webhooks 생성 Spri..
[230716] [미니] 모여봐요 인생네컷 CI/CD 구성 (2) Jenkins 환경 구성 ✔ Docker 설치 💬 Docker Image를 통해 Jenkins을 설치 및 실행하기 위해 진행 1.Docker 설치 sudo apt-get update sudo wget -qO- https://get.docker.com/ | sh 2.Docker 그룹에 현재 계정 추가 sudo usermod -aG docker ${USER} sudo systemctl restart docker ✔ Jenkins 설치 💬 Jenkins과 Java 17이 설치된 환경 이미지를 내려받고 실행. 추가적으로 서버와 가상서버의 포트 및 저장공간을 연결. 1.Java 17 환경을 가진 Jenkins 이미지 내려받기 docker pull jenkins/jenkins:lts-jdk17 2.Jenkins 이..
[ 230716 ] 31주차 회고 일주일 간 진행한 내용 1. 다른 페어와 코드 리뷰 2. 미니 프로젝트 진행 다른 페어와 코드 리뷰 [진행] 화요일 쯤에 과제 3을 제출했다. 제출하고 코드 리뷰 페어가 정해져서 목요일에 코드 리뷰 시간을 가졌다. 30분 정도 서로의 코드를 보는 시간을 가졌다. 그 후 이슈를 생성해서 좋았던 점과 피드백 할 점을 작성했다. 우리 쪽에는 이번에 댓글 기능을 추가했는데 Controller 분리를 해보는 것이 어떠한지 등에 대한 질문이 들어왔다. 이러한 질문들에 답을 하는 시간을 가졌다. [생각] 코드를 발전시키기 위해서 코드 리뷰 하는 시간을 가지는 것은 너무 좋다. 그다른 분들의 의견을 들으면서 내가 잘못 알고 있거나 작성한 코드에 대해서도 알 수 있다. 이러한 시간들을 통해 성장할 수 있기 때문에 중간 ..
[230715] [미니] 모여봐요 인생네컷 CI/CD 구성 (1) CI/CD ✔ 용어 정리 📕 CI/CD는 애플리케이션의 개발 단계를 자동화하여 짧은 주기로 사용자에게 제공하는 방법이다. 📄 CI(Continuous Integration)는 프로젝트를 할 때 "각각의 작업을 어떻게 잘 통합할 수 있는가?"이다. 📌 방법은 빌드 자동화 및 각 작업을 공유 브랜치에 수월하게 병합할 수 있게 하는 테스트 자동화 등이 있다. 📄 CD(Continuous Deliver)는 빌드된 애플리케이션 코드를 배포를 위한 저장소에 저장하는 것이다. 📄 CD(Continous Deployment)는 빌드된 애플리케이션 코드를 배포 자동화 하는 것이다. 📌 Continous Deliver와 Continous Deployment 두 용어는 자동화가 어느 정도까지 되었는가에 따라 사용이 된다. ..
[230714] [미니] 모여봐요 인생네컷 S.A 목표 ✔ 메인, 인생네컷 작성, 인생네컷 목록, 인생네컷 상세 화면 구성 ✔ CR(U)D API 작업 ✔ 자동 배포를 위해 CI/CD 작업 와이어 프레임 API 명세 페이지 기능 method API url request response 구현 하는 사람 메인 인생네컷 메인 사진 조회 GET /api/photos/main { photo:링크 } 정지현 인생네컷 글 목록 인생네컷 게시글 목록 조회 GET /api/post {[ username: 사용자 이름, title: 제목, content: 내용, createdAt:작성날짜, photo:링크], [ username: 사용자 이름, title: 제목, content: 내용, createdAt:작성날짜, photo:링크] …} 이채원 인생네컷 글 상세 인생네..
[230713] Record 적용해보기 Record 💬 class, interface 등과 같은 타입 선언으로 불변 객체로써 데이터를 표현하기 위해 만들어졌다. 또한 다양한 기본적인 기능들을 제공해 편리하게 사용할 수 있다. ✔ 모든 필드에 private final 적용 ✔ 모든 필드에 getter 적용 ✔ 모든 필드를 인수로 가지는 생성자 ✔ 모든 필드가 일치할 경우 true를 반환하는 equals 메서드 ✔ 모든 필드가 일치할 때 동일한 값을 반환하는 hashcode 메서드 ✔ 클래스 이름과 모든 필드의 값을 포함하는 toString 메서드 Record 코드 적용 ✔ 기존 코드 @Getter @RequiredArgsConstructor public class PostRequestDTO { private final String title; ..
[230712] Filter에서 400 상태코드 내려주기 Filter에서 ExceptionHadler ✔ filter 코드 if(!jwtProvider.validateToken(token)){ throw new IllegalArgumentException("유효하지 않은 토큰입니다"); } ✔ CustomExceptionHandler 코드 @ExceptionHandler(IllegalArgumentException.class) public ResponseEntity handleUserException(IllegalArgumentException e) { log.error("IllegalException",e); return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(e.getMessage()); } ✔ 문제 ❗S..
[230711] @Transactional(readOnly = true) Transactional(readOnly = true) 💬 Transaction에 readOnly 옵션을 사용하면 수정과 저장하는 것을 방지할 수 있다고 한다. 또한 수정이 일어나지 않기 때문에 별도로 스냅샷에 비교 객체를 저장해두지 않는다고 한다. 이를 통해 메모리 사용량을 최적화할 수 있다. ✔ 저장 및 수정을 예방 @Transactional(readOnly= true) public Post getPost(Long id) { postRepository.save(new Post()); } ❗java.sql.SQLException: Connection is read-only. Queries leading to data modification are not allowed ✔ 스냅샷 별도 저장하지 않는다 💬..