⚡ 개요개발을 하면서 데이터 스키마를 기반으로 직렬화 가능한 DTO를 설계 하고 프론트엔드와 백엔드간의 데이터를 주고 받는 작업을 하게 된다.이때 클라이언트의 정보가 잘못되었을 가능성도 있고, 위조되어 넘어올 가능성도 존재한다. 이를 방지하기 위해서 백엔드에서도 한번더 검증 하는 로직을 작성 하는게 좋다.⚡ Validation Annotation을 사용하는가?유효성 검증은 신뢰할 수 있는 시스템을 위한 첫 관문사용자 입력은 언제나 신뢰할 수 없다.서버는 항상 방어적으로 동작해야 한다.Validation Annotation은 선언형으로 검증 로직을 간단하게 처리코드 중복 없이, 컨벤션에 따라 쉽게 적용 가능Spring, Jakarta EE, Hibernate Validator와 같은 프레임워크와의 통합⚡ ..
전체 글
나만의 기록... 까먹지말자...⚡ 개요SPA로 웹 Front-end를 개발하다보면 사용자의 브라우저의 캐싱 기능때문에 빌드/배포 후에도 최신 파일의 변경사항이 적용되지 않는 경우가 있다.강력 새로고침(ctrl + shift + F5) 기능을 이용해 이를 해결할 순 있지만 일반 사용자에게 배포 때마다 이것을 요구하는 것은 맞지 않기 때문에 개발자가 이 문제를 해결 해야한다. ⚡ SPA 캐싱 개념 📁 정적 리소스 캐싱 (Static Asset Caching) HTML, JS 번들 파일, CSS, 이미지, 폰트 등 변경되지 않는 리소스 사용자의 브라우저가 동일한 파일을 재요청하지 않아 네트워크 비용이 줄고 빠르게 렌더링 된다는 이점이 존재 한다.정적 리소스 파일을 번들 하는 과정에서 해쉬값을 붙여서 파일 변경시에만 캐시 무효화가 가능 ..
⚡ 개요최근 회사 일정과 다른 일정들이 겹치게 되면서 작업한 내용들을 노션에서만 정리를 하고 있다...😭기존 프로젝트를 리뉴얼 하는 과정에서 자주 사용하고, 중복된 코드도 많이 나오는 부분을 최대한 공통화 시켜서 관리 하자는 얘기가 나오게 되었고 이를 바탕으로 준비 했던 내용을 정리 하려고 한다. (참고) 코드적인 내용은 나오지 않습니다. ⚡ 사용 이유우리 회사를 기준으로 공통화 라이브러리를 관리하고 사용 해야 겠다고 생각한 내용을 정리했다.코드 중복 방지 및 일관성 유지개발 진행간에 작업 범위도 크고, 코드량이 많다보니 매번 사용하는 코드를 각자의 방법으로 개발해서 사용하는 경우가 많으며, 이때 간혹 프로세스가 변경됨에 따라서 일부 코드는 정상 동작 하지 않는 경우가 발생해서 이슈가 나오는 경우가 있..
⚡ 개요DB에서 테이블 생성할 때 Default 값을 설정했지만 값이 null로 들어가 있는 상황이 발생을 하게 되었고 기본값을 사용하는 과정에서 NPE 발생하게 되었다. 이에 따른 내용을 정리하려고 한다. 내부 로직에서 저장하는 부분을 찾아보니 repository에서 save() 함수를 통해서 저장을 하고 있었다. Entity에서도 Default을 설정 했는데 왜 기본값으로 저장이 안 되고 null로 저장이 되는지 한번 알아보자. ⚡ 내용 Entity 일부코드를 살펴보면 @colunmDefault() 어노테이션을 사용해서 기본값을 설정한 부분을 볼 수 있다. nullable은 설정하지 않았기 때문에 실제 DB에 값은 null로 들어갈 수도 있었다. @colunmDefault() 에 대해서 문서를 ..
⚡ 개요요즘 고객사에 점진적으로 솔루션이 나가게 되면서 기능적인 오류 보다도 사용자가 많고, 데이터가 많아짐에 따라 생각지도 못한 부분에서 속도가 느리거나 OOM 이슈가 나오고 있다. 😓 내부적으로 개발 단계에서 생각하지 않고 개발한 부분에 대해서는 개선 작업을 통해서 어느 정도 해결이 된 부분도 있고, 초기 단계에서 구조를 잘못 잡아서 발생하는 부분도 존재하고 있지만 어느 정도 인지를 하고 개선 작업을 하고 있다. 하지만 특정 화면이나 기능이 동작하는 과정에서 여러 서비스를 호출하고, 데이터를 가공하는 과정에서 문제를 찾기란 쉽지가 않다. 내부에서 테스트 코드를 작성해서 호출 과정 및 메모리 사용을 체크 해서 발견이 되면 다행이지만 나오지 않는 경우도 종종 존재한다. 위의 이슈에 따라서 모니터링에 ..

⚡ 개요개발 단계에서 발생한 session 이슈가 있어서 해당 내용을 정리 하려고 한다. 운영 단계에서는 발생할 가능성이 적은 내용이며 보안상의 이슈이기 때문에 간단하게만 정리하고 넘어가려고한다. 특정 데이터를 통신 과정에서 유지하기 위해서 session, cookie, token 등 여러가지 방법이 존재한다.Spring boot session 을 검색만 하더라도 어떻게 구현을 해야하는지도 나온다. 물론 개념적으로 더 알면 좋지만 검색을 하고 따라만 하더라도 개발자 도구에서 쿠키를 확인 해보면 session ID가 들어오고 유지되는 부분을 확인 할수가 있다.로그인 페이지를 구현하고 테스트 하는 과정에서 계속 session에 저장되지 않고 새로운 session이 생기는 이슈가 발생해서 내용을 정리하게 되었..

⚡ 개요spring boot + vue 프로젝트를 진행할 때, vue에서 router를 설정했지만, 새로고침을 하는 순간 404 에러 페이지가 로드되는 이슈에 대해서 내용 및 수정 방법에 대해서 정리를 하려고 한다. 일단 기본적으로 404가 나오는 이유에 대해서 설명하자면 새로고침을 하는 순간 spring에서 servelt에 맵핑된 주소를 찾는데 없기 때문에 404가 발생하는 것이다. 단순하게 컨트롤러에 전부 맵핑을 해준다면 해결되는 이슈이기도 하다. Vue는 SPA이고, index.html 페이지 내에서 모든 동작이 이뤄지도록 되어있다. 페이지 이동을 몇 번을 하던 결국은 index.html 페이지 하나에서 동작한다고 보면 된다. ⚡ History Modevue 공식 문서를 확인 해보면 History ..
⚡ 내용속도적인 이슈로 인해서 일부 queryFactory를 사용하는 부분을 SQLQueryFactory로 변경을 했다.이때 조회 방식은 동일하지만 내부 구현체가 좀 달라서 그런지 LocalDate 타입으로 반환하는 결과값이 이상하게 나오는 부분이 있어서 정리를 하려고 한다.⚡ 이슈 정리나는 오늘 날짜를 기준으로 데이터를 조회 했지만 하루전 데이터가 나와서 데이터가 꼬이는 부분이 발생을 했다.실제 결과 값에 대한 디버그를 해보니 하루전 데이터가 나오고 있었다. 최근에 변경한 부분이 queryFactory 를 sqlQueryFactory로 변경한 부분이 있어서 실제 결과 값을 만드는 부분에 대해서 클래스 내용을 확인 해보니 반환하는 부분에서 좀 이상한 부분이 있어서 공유를 하려고 한다. 아래의 이미지는 실..

⚡ 개요최근에 프로젝트를 하면서 신규로 적용했던 내용을 정리하려고 한다. 일단 공식 가이드 문서가 순차적으로 잘 되어있기 때문에 공식 가이드를 먼저 보는 걸 추천한다 (링크) 공식 가이드 문서가 잘 되어 있기때문에 설치에 대한 내용은 보고 따라 하는 게 편하다. vue cli를 통해서 라이브러리를 추가하는 방법도 존재하고, 이미 프로젝트가 존재하는 경우에도 추가하는 방법이 자세히 설명되어 있다. ⚡ 사용 이유공식 가이드에 따른 장점과 내가 적용을 하면서 느낀 사용 이유에 대해서 정리를 해놓으려고 한다. 📗 공식 가이드 문서 기준 사용 이유 (링크)1. 지원 범위가 넓다.React를 기준으로 가이드가 작성되어 있지만 다른 FrontEnd 프레임 워크를 지원 하고 있다. 2. HTTP 네트워크 통신아마..