서버 시간과 ms 단위 동기화 하기
2023년 09월 25일새로운 과제를 해결해나가는 과정은 항상 흥미로운 것 같다. 요즘엔 서버시간을 ms 단위로 동기화 할 수 있는 방법에 대한 과제가 주어졌다. 이 과제를 풀어나가는 도중 서버 시간을 맞추기 어렵다는 내용의 영상을 접하게 되었다. 과연 서버시간을 ms 단위로 동기화 할 수 없을까? 이에 대한 내 의사 결정과 풀이 방법에 대한 내용을 작성 해본다.
새로운 과제를 해결해나가는 과정은 항상 흥미로운 것 같다. 요즘엔 서버시간을 ms 단위로 동기화 할 수 있는 방법에 대한 과제가 주어졌다. 이 과제를 풀어나가는 도중 서버 시간을 맞추기 어렵다는 내용의 영상을 접하게 되었다. 과연 서버시간을 ms 단위로 동기화 할 수 없을까? 이에 대한 내 의사 결정과 풀이 방법에 대한 내용을 작성 해본다.
Spring에서는 spring-data-jpa를 통해 공식적으로 Page 데이터 클래스를 제공한다. 하지만 sort 부분의 각 Entity 별 필드 유효성 검증이 이루어 지지 않아 내부에 따로 유효성 검증을 두어야 한다. 이에 대한 처리 방법에 대해 기록해본다.
Spring Boot는 별다른 설정 없이 자동으로 기본으로 사용할 다양한 기능을 초기화 해준다. 이 중 message와 i18n 기능을 사용하면 클라이언트에 전송할 결과, 에러 문자열을 다른 방식이나 소스 내 하드 코딩 하지 않고 설정한 값으로 사용 가능하다.
Spring Boot는 기본으로 MessageSource를 통한 메시지 기능과 Validation 기능을 제공한다. 그런데 MessageSource가 어떻게 동작하는지, 왜 RequestBody는 @Valid 어노테이션 만으로 유효성 검증이 되고 RequestParam은 조건부로 검증이 되며 Type level에 @Validated가 붙어야 하는지 궁금했다. 그래서 한번 내부 구현을 들여다보았다.
테스트 주도 개발(TDD) 책을 보며 공부했던 내용을 간단히 요약 정리 해본다.
전통적 서버사이드 웹 애플리케이션에서 브라우저는 정적 데이터만 렌더링하며 서버 응답이 필요할 경우 페이지를 새로 작성하는 형태로 동작했다. 하지만 비동기 통신과 동적 렌더링을 위한 라이브러리, 프레임워크가 등장하며 페이지 새로고침 없이 실시간으로 페이지 전체 혹은 일부를 변경 시킬 수 있게 되었다. 로그인 상태도 마찬가지로 서버 요청을 통한 화면 변경과 같이 진행 되며 로그인 상태가 유지 되고 있는지, 어떤 이유로 로그아웃이 되었는지 확인해왔다. 그렇다면 동적 환경에서 로그인 상태를 확인 할 수 있는 효율적인 방법은 무엇이고 어떻게 효율적으로 작성할 수 있는지 알아보자.
서비스 운영을 위해 서버 주소를 도메인과 연결하는 건 필수다보니 개발하다보면 DNS 설정을 접하게 된다. 그런데 종종 cname 레코드에 apex 도메인을 사용하려는 사람이 있다. apex 도메인은 서브도메인을 제외한 개인이 소유한 도메인이다. 왜 apex 도메인을 cname 레코드에 설정하면 안되는지 알아보자.
Spring Batch 5.0 출시 이후 많은 부분이 변경 된 것 같다. 거기에 kotlin을 도입해 배치 앱을 구성하고자 하는데 한국어 레퍼런스가 많이 없는 것 같다. 간단한 내용과 예제 소스를 통해 알아보도록 하자.
Java는 멀티 스레드를 지원하는 언어이기 때문에 잘 사용하려면 이에 대한 이해도 필요하다. Java를 통해 프로그램을 개발한다면 알게 모르게 자주 써왔을 테지만 막상 공부하지 않는다면 깊게 이해하기 힘든 부분이다. 잘 사용한다면 순차적인 접근에 비해 훨씬 빠르고 효율적인 병렬 처리 방법에 대해 간단히 알아보고 사용하는 방법도 많아 간단히 정리하고 넘어가보려 한다.
ChatGPT가 활성화되면서 개발업계도 대격변을 맞이하는 것 같다. 누군가는 ChatGPT가 개발자를 완벽하게 대체할 거라 하고 누군가는 아무나 개발을 할 수 있을 거라고 한다. 실제로 어떤 분은 새로운 언어를 배울 필요가 많이 없어질 거라 했고 어느 인터넷 게시글을 보니 레거시 개선이 아주 쉬워질 거라고 했다.