전체글114 테이블마다 id 칼럼을 PK로 사용한 이유는 무엇일까? 목차개요설계 테이블사용한 이유와 장점결론1. 개요프로젝트 테이블을 설계하고 리뷰를 받는중 아래와 같은 질문을 받았다.Q) 각각의 테이블에 auto increment 되는 id 칼럼을 사용한 이유와 했을때의 장점이 무엇인가요?A) 어,,, 엄,,, 관용적으로 많이 사용해서 자연스럽게 id를 PK로 사용했습니다. 질문을 받은 나는 대답을 제대로 하지 못하였고 테이블을 왜그렇게 설계했는지보단 관용적으로 이렇게 많이들 사용한다고 해서 자연스럽게 테이블을 설계했던 것이었다. '설계를 왜 이렇게 했는가?' 에 대해서 고민하고 설계를 해야 하는데 이번을 계기로 많은 사람들이 왜 id칼럼을 auto increment가 되는 칼럼으로 사용했을때 장점에 대해 정리를 해보려고 한다.2. 설계 테이블내가 설계한 테이블은 위와.. 2024. 2. 14. 젠킨스를 통한 CI/CD 구성하기 - CD 목차개요CD 파이프라인 워크플로우Naver Could Container Registry 신청Jenkins서버 ↔ 애플리케이션 서버 ssh 키 생성Jenkins ↔ Application Server SSH 원격 접속 Credentials 등록Jenkins ↔ Docker Registry Credentials 등록Dockerfile 생성하기배포 작업하기파이프라인 스크립트 작성main 브랜치 Push 및 배포 확인하기1. 개요지난 젠킨스를 이용하여 CI를 구성하였고 이번 글에서는 배포를 자동화해주는 CD를 구축해보려한다.우리는 CI/CD 구축이 되어 있지 않다면 매번 코드를 옮기고 Jar를 빌드해서 서버에 옮기고 서버를 재시작하는 과정을 반복해야 할 것이다.Jenkins를 이용해 구축할 것이며 아래 과정에서 .. 2024. 2. 12. Validation 책임과 범위는 어떻게 가져가야할까? 목차개요Client vs ServerLayer별 책임3-1. Controller Layer3-2. Service Layer3-3. Repository Layer결론1. 개요개인 프로젝트를 진행하다 보니 작은 고민이 생겼다.과연 어떤 Layer에서 Validation을 체크하는게 맞을까? 에 대한 고민이었다.크게 Controller, Service, Repository로 나누었다면 넘어온 값들에 대한 벨리데이션에 대한 책임을 나누어야 한다고 생각했다.2. Client vs ServerClient빠르게 검증은 가능하지만 Client에서는 조작이 가능하기 때문에 Client만 검증을 하는 것은 안된다.Server빠르게 검증은 불가능하지만 안정적인 유효성 검사가 가능하고 DB를 통한 검증도 가능하다.Client.. 2024. 2. 6. 젠킨스를 통한 CI/CD 구성하기 - CI 목차개요CI/CD란?Jenkins 설정3-1. JDK 버전 설정3-2. Gradle 버전 설정3-3. Github Access token 설정3-4. Multibranch Pipeline3-5. Multibranch Scan Webhook Trigger 플러그인 설치3-6. Multibranch Pipeline 아이템 생성3-7. 크레덴셜 추가3-8. Branch Source 추가3-9. Build Configuration3-10. Webhook 연결3-11. Scan Repository Triggers3-12. Jenkinsfile 생성결론1. 개요빌드를 자동화 하기위해 알아 보던 중 GithubAction, Jenkins, Travis 등등 다양한 CI 도구를 마주하게 되었다.그 중 Jenkins와 .. 2024. 2. 6. 테스트코드가 프로덕션코드에 영향을 주어서는 안된다? 목차개요두 가지 관점어떤 관점이 더 옳은가?결론1. 개요테스트 코드를 작성하면서 어려움을 겪고 말았다. 상황은 다음과 같다.서비스 테스트 코드를 작성할때, RequestDto가 필요한데, Dto 클래스는 getter만 열어둔 상황.실제 프로덕트 코드에서는 Controller를 통해 @RequestBody로 들어오기 때문에 문제는 없지만, 테스트 코드에서 Reflection을 이용해 값을 채우거나 mapper를 이용해서 작성하였는데, 여기서 고민이 시작되었다. 2. 두 가지 관점프로덕션 관점@Builder나 @Allargument가 없어도 프로덕션 코드에서는 @RequestBody로 들어오기 때문에 필요하지 않다.테스트 관점테스트 코드를 작성할 때 사용하는 코드니까 작성해도 무방하다.3. 어떤 관점이 더 .. 2024. 2. 3. @NotNull @NotBlank @NotEmpty를 뭐가 다를까? 목차개요@NotNull 이란?@NotEmpty 란?@NotBlank 란?결론1. 개요프로젝트를 진행하면서 validation체크를 하기 위한 비슷한 (@NotNull, @NotBlank, @NotEmpty) 3가지 어노테이션을 마주하게 되었다.스프링 부트 3.0부터는 기존 javax.validation.constraints 에서 jakarta.validation.constraints 로 패키지명이 변경 되었으나 동일한 기능을 제공하고 비슷한 어노테이션에 차이를 알아보려고 한다.2. @NotNull 이란?The annotated element must not be null. Accepts any type.@NotNull은 Null 값만 허용하지 않는다. 즉 Null이 아닌 “”, “ “ 인 경우에는 허용을.. 2024. 2. 1. 이전 1 ··· 4 5 6 7 8 9 10 ··· 19 다음