본문 바로가기

Server5

02. 알아두면 쓸떼있는 GeneratedValue 이야기 Part1 시작하며 우리는 Entity를 만들 때 우리는 PK (Primary Key)를 지정한다. 그중에서도 Primary Key를 선택할 때, 전략적으로 생각했을 때 순차 증가 값을 포기할 수가 없다. 과연 그럼 JPA에서는 이런 대체 키를 어떻게 생성하고, 어떤식으로 동작하는지에 대해 알아보도록 하자. GeneratedValue란? import javax.persistence.*; import java.io.Serializable; import java.time.LocalDateTime; @Table(name = "coupon") @Entity @Getter @Setter public class Coupon implements Serializable { private static final long seria.. 2020. 6. 4.
01. 그 Enum 사용 방법은 틀렸다. (Attribute Converter에 대해 알아보자) 시작 우리는 개발을 하다 보면 열거형 타입의 데이터를 많이 다루게 된다. 가장 흔한 데이터로는 '남성', '여성'이 있기도 있을 것이고 계절이라는 데이터에서는 '봄', '여름', '가을', '겨울' 이 있을 것이다. 이제 DB로 다시 이야기를 해보자. 우리는 DB에 데이터를 효율적이게 넣고 싶을 것이다. 어느 누가 int로 저장 가능한 정보를 '남성' 이런 식으로 값을 낭비하면서 적고 싶겠는가! 오늘은 JPA에서 제공하는 Enum의 처리법에 대해 알아보고, 그중 'Attribute Converter'에 대해 이야기해보려고 한다. @Enumerated 있는데 그거 아님? "이거 이거 정말 멍청한 놈이군.. 우리에겐 @Enumerated이 존재하다고~" 맞다. 우리에겐 @Enumerated가 존재한다. 하지.. 2020. 5. 23.
Spring 이 정도는 해줘야지 - 01. 시작하며 거 제목이 너무 자극적인거 아니요? 제목은 원래 자극적이게 적는거다. 그래야 "이놈보게~" 하는 자극을 주면서 사용자가 유입되게 된다. 사실 최근에 지인을 통해 @city7310 님의 '백엔드가 이정도는 해줘야함'에서 아이디어를 얻어서, 'Spring 이정도는 해줘야지' 으로 제목을 가지게 되었다. 백엔드가 이정도는 해줘야 함 - 1. 컨텐츠의 동기와 개요 필자가 고등학교 1학년 말에 처음으로 백엔드 포지션에서 프로젝트를 진행하며, 멍청했던 과거 이야기와 이 컨텐츠를 기획한 동기를 공유합니다. velog.io 이 연재는 왜 시작하게 되었나요? 최근 주변에서 여러가지 이유로, Spring에 관심을 가지는 선/후배들이 많아졌다. 근데 이들이 물어보는 내용이 거기서 거기고, 매번 똑같은 내용 다시 설명 해주기.. 2020. 5. 7.
대용량 푸시 발송 시스템 개발기 - (1) 시작 B2B 서비스에 대한 지루함을 느끼던 상황에서, 회사 실장님의 추천으로 B2B 서비스 팀에서 B2C 서비스팀으로 팀을 옮기게 되었다. 문제의 시작 약 6년간 공석이던 B2C 서비스 서버 개발자의 자리에 내가 들어가게 되었는데, 어느 정도 예상은 했지만 공석의 문제는 생각보다 컸다. 처음에 팀에 왔을 때, 정말 많은 문제가 있었지만, 가장 큰 문제는 푸시 전송 시스템이 없어서, 클라이언트 개발자가 일명 돌려치기 (땜빵) 하면서 겨우 겨우 서비스가 운영되고 있었다. 이렇게 돌아가는데 문제가 없었냐? 당연히 서비스적으로 문제가 많았고, 그러다 보니 유저에게 좋지 못한 경험이 많이 노출 되게 되기도 하였고, 비용적인 관점에서 봤을 때도 비효율적으로 사용되는 비용이 많았다. 또한, 우리 팀의 2020년 로드맵을 .. 2020. 3. 9.
MSA 고군분투기 — (1) JAVA의 DNS Cache 이슈 해결기 내가 만든 서비스는 기본적으로 DNS 기반으로 서비스를 다 하고 있다. account.yangs.internal , search.yangs.internal, mariadb.yangs.internal 등등.. 서비스중에 문제가 생기거나 구성 변경으로 인하여 혹은 아마존 내부의 이슈가 생기면 DNS에 IP를 스위칭해서 HA하는 형태로 운영중이었다. 어느날은 DB에 장애가 발생하여, 자동으로 IP가 변경되었는데 Application 레벨에서 전환이 진행이 안되어서 재기동으로 해결 한 기억이 있다. DNS 서버 설정 문제인가 봤는데, DNS서버의 문제가 아닌 JAVA 클라이언트 의 DNS Cache 정책으로 인하여 발생한 이슈였다. 오늘은 그 이야기를 해보려고 한다. DNS 공격을 방지하기 위한 JAVA의 정책.. 2020. 1. 6.