문제발생 새로운 배포를 진행 후 Spring Boot Application 서버가 몇 분뒤에 응답을 할 수 없는 상태가 발생하였다. stage단계에서 간단한 기능 테스트에선 문제가 없었는데 배포 후에 요청이 어느정도 발생하고 나면 문제가 발생하였던 것이다. 신규로 나간
pagination 일반적으로 클라이언트가 서버에 데이터를 요청할 때 데이터가 많다면 한번에 모든 데이터를 내려줄수는 없을 것 이다. 그렇다면 서버의 입장에선 데이터를 일정 개수로 잘라서 차례대로 전달을 해주어야 할텐데 이를 pagination이라고 한다. MYSQL
개요 최근에 경험했던 이슈에서 개인적으로 충격이었던 mysql의 collation에 대해서 정리를 해보려고 한다. 이슈에 대해서 간략하게 설명하면 다국어를 지원하는 어떤 테이블의 유니크한 컬럼 요소는 웹어플리케이션에서 한번 중복체크를 하고 삽입을 시도한다. 문제는
@Transactional은 어플리케이션 레벨에서 선언적으로 트랜잭션 처리를 지원한다. 이번 글에선 JPA를 기준으로 @Transactional의 동작에 대해서 알아보도록 하자. Transactional 우선 @Transactional의 패키지를 살펴보자, java
이 글은 코틀린으로 배우는 함수형 프로그래밍을 읽고 간략하게 내용과 소감(?)을 정리하려고 쓴 글이다. 함수형 프로그래밍이란? 함수형 프로그래밍은 자료 처리를 수학적 함수의 계산으로 취급하고 상태와 가변 데이터를 멀리하는 프로그래밍 패러다임의 하나이다.[from
서론 이번에 toss에서 발표한 slash22에서 서버와 관련된 세션을 보면서 오히려 궁금증이 커졌던 부분에 대해 조사를 해보려고 한다. 사실 나머지 세션은 대부분 서버의 인프라를 어떻게 구성했는가? 에대한 이야기들이었다. 간단하게 이야기 하면 금융권에서 MSA를 어
코틀린으로 배우는 함수형 프로그래밍 이란 책을 공부하던 중 약간 긴가민가 한 부분이 있어 한번 짚고 넘어가려고 한다. 함수형 프로그래밍에서 일반화에 필수적인 generic은 남발하게 되면 매우 지저분해지는 느낌이 든다. 특히나 확장 함수를 지원하는 Kotlin의 경우
리액티브 프로그래밍 선언적 프로그래밍 변화의 전파와 데이터 흐름 리액티브 프로그래밍은 보통 위 2가지 키워드로 설명되는데 개인적으로 이해한 내용을 정말 단순하게 풀어써보면 for문과 같은 반복문을 사용해서 명령형으로 데이터를 처리하던 것을 함수형 프로그래밍을 활용하
Redis Stream을 활용하기 위한 간단한 프로젝트를 구상해 보았다. Stream을 활용하기 위해선 우선 Producer와 Consumer의 역할을 할 구성요소가 필요하다. 나는 다음과 같은 프로젝트를 구상해 보았다. (흐름도의 퀄리티는 양해를..) 텔레그램의
차후 진행할 토이 프로젝트에 Spring Batch의 기능을 활용하면 좋을 것 같아서 간단한 예제를 만들면서 Spring Batch에 대해 공부를 해보려고 한다. 해당 예제는 telegeram의 bot을 사용하여 특정시간 마다 알람을 전송하는 기능을 구현해 보려고 한다
개요 매번 구현할 때 마다 헷갈려서 한번 쯤 정리해야겠다고 생각을 해서 블로그 개발에도 적용했던 JWT인증을 기준으로 Spring Security를 간단하게 살펴보고자 한다. Spring Security에는 매우 많은 기능이 있지만 레퍼런스를 모두 훑어볼 용기는 없
Query DSL은 복잡한 쿼리를 매우 편하고 빠르게 구현할 수 있게 해주는 매우 좋은 도구이다. 하지만 관계형 데이터베이스에서 객체로 매핑해주는 과정에서 발생하는 불균형 때문에 여러가지 직관적이지 않은 문제가 발생을 하는데 최근에 Query DSL을 사용하면서 흔히
Primary Key와 Unique Key는 정확히 어떤 차이점을 갖고 있을까? 우선 눈으로 확인할 수 있는 차이점은 Unique Key는 Null을 허용 한다는 것일 것이다. 그렇다면 정말로 차이점은 그 뿐일까? 내부적으로는 어떠한 차이점을 갖고 있을까? 두 요소의
KAKAO Cloud Portal 카카오의 사내 클라우드 포탈을 소개하는 페이지 중에서 평소에 잘 정리가 안되던 부분이 나와 정리를 해보려고 한다. 사실 프론트엔드의 템플릿이나 보일러플레이트 부분은 잘모르는 관계로.. 그냥 그렇구나 싶었고 인증부분에서 평소 궁금하던
요즘 흔히 말하는 stateless한 웹 어플리케이션을 개발한다고 했을 때 가장 단순하게 DB와 웹 어플리케이션의 관계를 표현 해본 그림이다. 여러개의 웹 어플리케이션이 분산되어 로직을 처리하고 이에 대한 상태는 DB에 저장된다. 그렇다면 DBMS에선 어떻게 여러 곳에
module? Java9 이전까지 순수하게 Java의 컴파일러와 JVM의 기능만으론 라이브러리 버전의 종속성이나 import할 Class 혹은 Package에 대한 정보를 명시 할 방법이 존재하지 않았다. Java9에 추가된 module기능은 완벽하다고 하긴 힘들지만
Stream API의 특징 Java의 Stream API는 Java에서 순차적인 혹은 병렬의 aggregate한 동작을 수행하는 함수형 인터페이스 이다. 람다식과 함께 사용하여 가독성과 코드의 재사용성을 용이하게 해준다. javascript에 익숙한 사람들이라면 사용방
Java와 같은 Managed 언어로 개발을 하는 경우 동적 메모리의 관리를 개발자가 직접해줄 필요가 없어진다. 이는 개발자의 편의성과 생산성을 높여주기도 하지만 잘알지 못하면 비효율적으로 메모리를 관리하는 어플리케이션을 만들 수도 있게 된다. Java의 동적 메모리는