본문 바로가기

424

QueryDSL 도입기 필요성에 관해서 Spring Data JPA를 사용하다보면 테이블을 생성해주고, 쿼리도 자동으로 생성해주기 때문에 매우 편리하지만 유연하게 데이터를 가져오는 것이 힘듭니다. 예를들어 날짜별로 그룹핑 후에 해당 그룹의 로우의 갯수를 찾는 쿼리를 날리려고 할 때, GROUP BY라는 것이 존재하지 않기 때문에 Spring Data JPA 안에서 @Query 어노테이션을 사용해서 직접 쿼리를 만들어주고, 응답받는 데이터를 매핑 해주어야합니다.(혹은 GROUP BY를 사용하지 않고, 데이터를 불러와서, 자바 코드 내부에서 리스트를 가공해서 처리 해주는 경우도 있다고 합니다.) 또한, 입장한 사람들의 날짜를 가공해서, 월별로 조회를 해서 통계를 내고 싶은경우를 예를 들면 SELECT DATE(v.check_in,.. 2021. 11. 9.
Java Out Of Memory Error: Java heap space 평소에는 별일이 없다가. 갑자기 프론트엔드분이 서버가 내려간거냐고 메세지를 보내셨다. 엉..? 그럴리가..? 하고 확인을 해봤는데 정말로 서버가 내려갔었고, 서버 로그에는 Java Out Of Memory Error: Java heap space 이 적혀있었다. 물론 ec2 t2 micro의 1GB 메모리를 사용하고 있어서, 뭐 스팩을 올리면 되겠지.. 라는 막연한 생각을 했었는데. 문득 든 생각은 그럼 사이즈를 어디까지 늘려야 하는거지?? 였다. 그래서 한번 힙 사이즈에 대해서 공부를 했다. min heap size(최소 힙 메모리 사이즈) max heap size(최대 힙 메모리 사이즈)를 설정 할 수 있는데 기본적으로, 즉 default는 max heap size는 해당 서버의 메모리의 25프로, .. 2021. 9. 19.
Api key 적용하기 배경 방문 예약 시스템에서는 방문 예약시 서버에서 URL Shortener api를 사용해서, 단축 Url을 만듭니다. 하지만, 아무런 제약이 없어서 누구나 호출해서 사용 할 수 있었습니다. 만약 악의적인 사용자가 있다면 우리서버에서 돌아가고 있는, 단축 URL 서비스를 마음대로 이용 할 수 있는 상황이었으며, 이 API를 우리 어플리케이션에서만 혹은 우리가 지정한 사용자만 호출 할 수 있게 하고 싶었습니다. - 우리 어플리케이션 외부(Postman)에서도 api가 정상적으로 호출되는 모습 API 인증방식 api 호출을 인가하는 방식에는 여러가지가 있습니다. (참고) 대표적으로 HTTP Basic Authentication OAuth 2.0 (Token in HTTP Header). API Keys 가 .. 2021. 8. 22.
URL Shortener 개발기 1. 개발 배경 방문 예약 서비스를 개발 중, 사용자들이 방문 신청을 하면, 입장할 때, 사용할 수 있는 QRcode의 Url을 문자메시지로 보내주려고 했는데, 문자메시지를 보냈을 때, 문자메시지의 길이가 너무 길어서 3개의 문자로 분리되어서 전송이 되었습니다. 문자메시지 전송 플랫폼은 AWS SNS를 사용을 했었는데, AWS SNS의 문자메시지 전송 규칙 때문이었습니다. 전송 규칙은 문자메시지 길이가 140 bytes가 넘어간다면 다음 문자메시지로 넘어가고, 결국엔 140 bytes를 넘기는 긴 문자를 보내면 위 이미지처럼 문자가 나뉘어서 전송이 가며, 문자가 나뉘어서 전송이 될 때, 순서가 보장되지 않는다는 것이었습니다. 또한, 만약 url 길어져서 3통의 문자로 가게 된다면, 사용자 입장에서 링크를.. 2021. 8. 6.