전체 글
-
Enum 유효성 검사하기Spring 2021. 8. 23. 22:58
요약 - @Pattern과 enum은 같이 쓸 수 없다. - 커스텀어노테이션을 만들어서 @JsonCreator와 같이 사용해서 처리했다. 파라미터 검증중 @Valid + @Pattern 이용해서 enum을 검증하려고 했다. 예를들어 Y,N만 들어가는 enum 타입의 멤버필드에 A를 집어 넣으려고한다면??? 물론 데이터가 들어가진 않겠지만 에러코드가 상당히 이쁘지 않을 것이다. 아래 코드를 통해 처리했다. DTO import com.example.test.test.constant.YnCode; import javax.validation.constraints.Pattern; import lombok.Getter; import lombok.ToString; @Getter @ToString public clas..
-
지연로딩, 즉시로딩JPA 2021. 8. 22. 21:56
Team과 Member의 관계가 1:N이고 member를 조회 할 때 member만 사용하는대 Team까지 가져오면 비용적 손해다. 그럴 경우 LAZY로딩을 이용해 proxy로 조회하는 방법을 쓰면된다. ex) @ManyToOne(fetch = FetchType.LAZY) // 지연로딩 주의사항 1.기본은 모두 LAZY로딩으로 잡아 놓고, 필요한 부분만 EAGER로딩으로 변경하는 것을 권장하고 있다. 이유 1-1 JPQL로 작성시 N+1 이슈발생. 1-2 다른 팀원이 member만 조회하려고 findById를 날렸는대, team 쿼리까지나가면 당황. 2. 연관관계 별로 fetch 기본값이 다름. @ManyToOne -> EAGER @OneToOne -> EAGER @ManyToMany -> LAZY @..
-
S3 스토리지 종류AWS 2021. 8. 19. 21:16
S3란? aws에서 지원하는 안전하고 가변적인 스토리지 서비스 일반S3 - 가장 보편적으로 사용되는 스토리지 타입 - 내구성과 가여용성이 높다(내구성: 데이터 손실없이 보관되는지, 가용성: 데이터 접근이 용이한지) S3-IA - 자주 접근되지는 않으나 접근시 빠른접근이 요구되는 파일이 많을시 유용 - 일반S3에 비해 비용은 저렴하나, 접근시 추가비용 발생 - 멀티AZ를 통한 데이터 저장(가용성 높음) S3-one zone IA - 단일 AZ를 통한 데이터 저장(가용성 낮음) - 서버다운같은 이슈가 발생하면 접근 불가 - 데이터접근시 S3-IA보다 20%정도 저렴 grlacier - 거의 접근하지 않는 데이터 저장시 유용 - 매우 저렴한 비용 - 데이터 접근시 약 4~5시간 소요 intelligent ti..
-
쿠버네티스 기초 개념Server 2021. 7. 27. 22:57
쿠버네티스에는 여러가지 오브젝트들이 있다. 아래 오브젝트들은 이해해야 한다! Pod - 쿠버네티스에서 관리하는 가장 작은 배포단위 - pod은 1개이상의 컨테이너를 포함 할 수도 있다.(보통은 1개를 사용한다) - libenessProbe -컨테이너가 정상적으로 동작하는지 체크 -정상적으로 동작하지 않는 다면 컨테이너를 재시작하여 문제를 해결 - readingnessProbe -컨테이너가 준비되었는지 체크 -정상적으로 준비되지 않는다면 pod으로 들어오는 요청을 제외 ReplicaSet - pod을 정해진 수만큼 복제하고 관리해주는 것 - pod만 단독으로 만들면 서버가 죽어서 pod이 사라지는등 문제가 생기면 자동으로 복구가 되지 않음. - resplicaset은 label을 체크해서 원하는 수의 Po..
-
model mapping 라이브러리 MapstructJAVA 2021. 7. 8. 23:02
Mapstruct란? 모델간 맵핑을 쉽게 해주는 라이브러이다 ex) entity dto -컴파일 시점에 맵핑클래스를 생성함(그래서 매우 좋음 바로바로 확인가능) -ModelMapper 보다 맵핑 성능이 훨씬 좋음 1. 라이브러리 추가 mapstruct만 추가해주면된다. dependencies { implementation 'org.springframework.boot:spring-boot-starter-validation' implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.cloud:spring-cloud-starter-netflix-hystrix' implementatio..
-
Spring Cloud Config 설정값 변경 후 반영하는 방법Spring 2021. 6. 3. 00:22
요약 1. POST로 http://서비스명/actuator/refresh 호출 2. @RefreshScope 어노테이션 사용 3.서버재기동(비추...) spring cloud config를 사용하면 설정값들을 외부에서 따로 관리하게 되는대 이때 설정값 변경시 반영을하는 방법이 여러가지가 있다. 기존에는 1.번과 같은 방법밖에 몰랐는대 이번에 팀장님께서 PR날리신 것을 보고 궁금해서 찾아봤더니 @RefreshScope 요런 방식도 있었다! @Value어노테이션을 사용하는 경우 같이 사용하면 매우 좋은것 같다!
-
2번째 이직! 퇴사 후 생각정리독백 2021. 5. 13. 17:06
약 2년9개월간의 여정(?)을 마치고 21년 5월11일부로 마지막 근무를 하게 되었다. (실 퇴사일은 21년 5월14일) 이직을 결심하게 된 것은 나의 성장때문이었다. 현재 회사에서는 정산 도메인을 담당하고 있고, 정산이라는 도메인 특성상 DB를 특히 많이 다루었었다. 개발자의 본질은 프로그래밍이라고 생각하기 때문에 그런 부분에서 아쉬웠다. 이번에 옮길 회사에서는 결제 도메인을 담당하게 되었다.(두근두근) 일단 개인 성향상 매출과 관련된 도메인에 흥미가 있었고, 맨 앞단인 결제, 가장 뒷단인 정산을 경험해봄으로 나에게 많은 도움이 될 것이라고 판단했다. 기존과는 다르게 JPA, AWS과 같은 새로운 개발환경을 접하게 되어 걱정반, 기대반이었다! 현 직장에서 재직하면서 배운점은 아래와 같다. 배운점 -출신..
-
AWS Dynamo DB 개념DB 2021. 4. 25. 12:41
AWS Dynamo DB를 처음 접하므로, 개념 정리글! 기존의 RDBMS와는 다른 관점에서 접근해야하는 듯하다! 쿼리를 먼저생각하고 스키마를 설계하는 방식! 1.기본 키 파티션키와 정렬키가 있음. 구성을 파티션키로만 사용할지, 파티션키+정렬키를 기본키로 사용할 지 선택 가능. 파티션키(해시키), 정렬키(선택사항) 1-1. 파티션키란? -파티션 키는 유일해야함 -RDB의 PK정도로 이해하면됨 -테이블내에 필수! -조건문으로 일치하는 값(=)만 가져 올 수 있음. 1-2. 정렬키란? -필수는 아님! -조건문으로 사용가능 한 것들 =, >,