RequestDto public record PostCreateRequestDto( Category category, @Size(max = 50, message = "제목은 최소 1자 이상, 최대 50자 까지 입력 할 수 있습니다.") @NotBlank(message = "제목은 필수 입력란입니다.") String title, @Size(max = 1000, message = "글 내용은 최소 1자 이상, 최대 1000자 까지 입력 할 수 있습니다.") @NotBlank(message = "글 내용은 필수 입력란입니다.") String content, List imageUrlList ) { } PostService public Long createPost(Long memberId, PostCreateRe..
분류 전체보기
오늘 깊게한 고민이다. 개요 팀 프로젝트 진행 중, Entity에 대한 생성을 어떻게 할 것인지 고민을 많이 했다. 우선 생성 방식은 정적 팩토리 메서드를 사용하기로 했다. 이유는 다음과 같다. 생성자를 쓰는 것보다 이름을 갖게 할 수 있어서 의미가 더욱 명확해진다. 말고도 더 많은 장점이 있지만 가장 큰 이유가 저거라고 판단했다. 근데 여기서 고민이 됐던게 // 1. public static User from(UserCreateRequestDto requestDto) { return User.builder() .username(requestDto.username()) .password(requestDto.password()) .build(); } // 2. public static User from(S..
Q. CI/CD에 대해서 설명해주세요 A. 지속적 통합 / 지속적 배포의 개념입니다. CI/CD가 탄생하게 된 배경부터 알아야하는데, 기존의 배포 작업 방식은 Push를 하고 PR을 올리고 Merge를 하고 SNAPSHOT 을 따서 서버에 파일을 보내고 돌아가던 서버를 끄고 다시 전달받은 파일로 서버를 구축하는 과정이 개발자 입장에서 상당히 까다로운 작업이었습니다. 그래서 CI/CD 개념을 도입을 해서 지속적으로 배포가 될 수 있게끔 만들었습니다. Q. CI/CD를 사용했을 때 기대효과가 있을까요? A. 사용자 불만사항이나 개선 사항에 대해서 지속적으로 수정을 할 수 있습니다. 예를 들어 결제 시스템에 오류가 나면 시간이 지날 수록 피해의 크기는 엄청 늘어나게 될 것입니다. 하지만 이런 오류를 고치려고 ..
개요 게시글에 이미지를 등록하는 기능을 구현하기 위해서 ERD 를 작성하는데, 이미지를 여러장 저장하게 하려면 어떻게 할까? 를 생각했다. 게시글을 조회 할 때 게시글 이미지 테이블을 조인해서 이미지를 갖고 오는 것이다. 이렇게하면 배열은 아니지만... 한 게시글에 여러장의 이미지를 저장하는 게 가능한데, 조인을 하기 때문에 성능적으로 굳이..? 싶었다. 그래서 검색을 해봤는데 배열 자료형을 문자열로 변환을 하고 저장을 한다고 한다. 꺼내 쓸 때는 문자열을 다시 파싱해서 배열 자료형으로 만들면 된다. MySQL Ver.5.7.8 / MariaDB Ver.10.2 이상 부터는 JSON이라는 타입을 지원 하는데 이걸 이용해서 Json 형식의 문자열 데이터를 저장하고 그걸 쓰면 된다. { "image":[ "..
드디어 대망의 CD 구현하기다. 우선 알아야 하는 것이 DockerHub와 이미지 docker-compose .env 파일 Dockerfile 깃허브 액션 yml 코드로 보자 # DockerHub 로그인 - name: DockerHub Login uses: docker/login-action@v2 with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} # Docker 이미지 빌드 - name: Docker Image Build run: docker build -t ${{ secrets.DOCKER_USERNAME }}/${{ secrets.DOCKER_REPO }} . # DockerHub Push - ..
오늘은 깃 액션으로 CI를 도전했다. 젠킨스와 깃 액션 중, 어떤 걸 할까 고민을 많이 했는데 깃 액션으로 하기로 했다. 이유는? GitHub와 통합 되어있음 젠킨스는 따로 서버를 열어야하고 WebHook을 사용해서 깃허브에서 푸쉬 된 걸 잡아주는 설정을 해야한다. 근데 깃허브는 그런 거 설정 안해도 된다. 따로 서버를 안 올려도 되니, 푸쉬하는 시간을 자유롭게 할 수 있음 템플릿 존재 깃허브 액션은 템플릿이 존재한다. 각종 상황에 맞게 템플릿을 선택하고 응용해서 사용이 가능 엄청 깊게 들어가지 않을 것이니, 템플릿이 존재하면 좋음 yml 파일로 설정 적응하면 읽기 쉬워진다. 엄청 읽는 거 근데 적응하는데 1시간도 안 걸린다. name: Gradle Package on: push: branches: [d..