post-thumbnail

선점 잠금 방식을 활용한 호텔 예약 기능 구현

룸 인벤토리에서 재고를 확인한다. 재고가 있는 경우 물량을 1 감소시킨다.예약을 진행한다.위 절차는 한 트랜잭션 내에서 수행되며 각 단계 수행 중 문제가 생기는 경우 전체가 롤백됩니다. 이 때 두명의 고객이 재고가 하나 남은 방을 동시에 예약하려고 하는 상황을 가정해

2021년 10월 30일
·
0개의 댓글
post-thumbnail

Spring JDBC를 통한 Batch Insert

숙박 예약 서비스 개발 중 인벤토리 추가 API를 개발하고 있었습니다.숙소 관리자는 본인이 등록한 RoomType의 Inventory를 추가할 수 있습니다.아래 Json 데이터를 받아 startDate 에서 endDate까지 예약 가능한 Room 갯수를 availabl

2021년 10월 21일
·
0개의 댓글
post-thumbnail

Artillery를 사용한 Stress Testing(DB Connection 데드락)

REST API 백엔드 시스템에서 Stress Testing을 위해 Artillery를 사용 Node.js, NPM 설치를 진행합니다. 설치가 완료되면 아래와 같이 버전을 확인할 수 있습니다.npm을 통해 아래 명령어로 Artillery를 설치합니다.공식 문서처럼 전역

2021년 10월 5일
·
0개의 댓글
post-thumbnail

flyway를 사용한 DB 버전 관리

Flyway필요성대부분의 프로젝트는 다수의 배포 환경을 가지고 있다.local dev(test) prod버전별 DB 스크립트 파일은 아마 다음과 같이 스크립트 파일을 쭉~ 열거하여 관리하고 일일이 파일을 DBMS에서 실행하고 있었다.개발 DB에서 변경한 Schema,

2021년 9월 12일
·
0개의 댓글

Docker MySQL 개발환경을 셋팅해보자

pull 명령어를 통해 docker hub에서 MySQL 이미지를 가져옵니다.images 명령어를 통해 가져온 이미지 목록을 확인할 수 있습니다.version을 명시해주지 않으면 가장 최신버전을 가져오는데 5.7 버전이네요.docker-compose 파일을 통해 여러

2021년 9월 11일
·
0개의 댓글
post-thumbnail

[Git Hook] Git Hook 사용하여 Java 코딩 컨벤션 지키기

코딩 컨벤션은 일종의 개발자들 사이의 규칙입니다.코딩 컨벤션을 지켜 전체적으로 일관성있는 코드를 작성함으로써 유지보수성을 높일 수 있습니다.Google Java Style Guidehttps://google.github.io/styleguide/javaguid

2021년 9월 1일
·
0개의 댓글
post-thumbnail

[GitHub Actions] Pull Reqeust시 코드 테스트 실행하기

예를 들어 누군가 저장소에 대한 pull 요청을 할 때마다 테스트 스크립트를 실행하는 명령을 수행할 수 있고작업 결과를 저장소에 push 할 때 코드 테스트를 실행하여이상이 없다면 운영 서버에 적용하고담당자에게 작업 완료 메시지를 보내는 등의 작업을 수행할 수 있습니다

2021년 8월 31일
·
0개의 댓글
post-thumbnail

[Book] 함께 자라기 - 애자일로 가는 길

단순히 시간을 많이 할애하는것으로는 실력을 키울 수 없다.의식적으로 부족한 점을 개선하려고 노력하는 시간이어야 의미를 가질 수 있다.그렇다면 부족한 점을 개선하기 위해서는 무엇이 중요할까?자신이 무엇이 부족한지 파악하는 것이 중요하다는 생각이 들었다.(이는 자신이 아는

2021년 8월 27일
·
0개의 댓글
post-thumbnail

스프링 시큐리티가 지원하는 인증에 대해 알아보자

인증 은 특정 리소스에 접근하려는 사용자가 누구인지 확인할 때 사용합니다.일상 생활에 비유해보면 회사에서는 출입증 또는 생체정보를 통해 출입하려는 사람의 신원을 확인합니다.웹에서는 보통 아이디와 패스워드를 이용하여 로그인을 통해 본인임을 증명합니다.일반적으로 사원의 권

2021년 8월 12일
·
0개의 댓글
post-thumbnail

MyBatis foreach 구문을 통해 N + 1 문제 해결하기

한 번의 쿼리 수행을 위해 N번의 추가적인 쿼리를 수행해야 하는 문제입니다.주문 상품 리스트 정보를 가지고 주문 생성 기능을 수행시 for문을 돌며 주문 상품 항목의 수만큼 N번의 Select 쿼리를 수행합니다.고객이 주문하고자 하는 상품이 시스템에 존재하는지, 주문

2021년 8월 4일
·
0개의 댓글
post-thumbnail

MyBatis Unsupported conversion from LONG to java.sql.Timestamp 해결하기 (@Builder 어노테이션 고찰)

MyBatis Mapper 인터페이스를 통해 SELECT SQL 쿼리 명령을 수행할 때 Error attempting to get column 'id' from result set. Cause: java.sql.SQLDataException: Unsupported

2021년 8월 4일
·
0개의 댓글
post-thumbnail

MySQL 실행계획을 출력하고 개선해보자

id : 실행 순서를 표시하는 숫자select_type : SELECT 문의 유형을 출력partitions : 데이터가 저장된 논리적인 영역특정 파티션에 선택적으로 접근하는 것이 SQL 성능 측면에서 유리하다.type : 테이블의 데이터를 어떻게 찾을 것인지에 관한 정

2021년 7월 25일
·
0개의 댓글
post-thumbnail

스프링부트 Caching 도입하기(Redis, Ehcache)

가져오는데 비용이 드는 데이터를 한번 가져온 뒤에는 복사본을 임시로 저장해둠으로써 애플리케이션 처리속도를 높이는 방식을 의미합니다.그렇다면 캐시는 언제 어디서 사용될까요?캐시는 애플리케이션 전반에 사용될 수 있으며 원본 데이터에 접근하는 시간이 오래 걸리는 경우, 값을

2021년 7월 23일
·
0개의 댓글
post-thumbnail

MyBatis 동작 원리를 이해하고 사용해보자

클라이언트 요청부터 서버의 응답을 받기까지의 과정을 정리하면 아래와 같습니다.

2021년 7월 15일
·
0개의 댓글
post-thumbnail

대용량 트래픽 처리를 위한 로그인 설계 : Redis

지난번 Sacle out 방식을 선택하고 세션 불일치 문제점을 해결할 수 있는 방안으로 Session Clustering 기술을 살펴보았습니다.그러나 Session Clustering은 늘어나는 서버의 갯수만큼 세션 정보를 복제 해야 하기 때문에 서버를 추가함에 대한

2021년 6월 20일
·
0개의 댓글
post-thumbnail

대용량 트래픽 처리를 위한 로그인 설계 : Scale up, Scale out

대용량 트래픽 처리를 위한 로그인 기능 설계에 대해 고민해보았습니다.기존 단일 서버 환경에서는 제한된 리소스(CPU, RAM)로 수천명의 사용자를 수용하기에는 어려움이 있었습니다.더 많은 사용자를 수용하기 위해서는 서버 리소스를 늘려야 합니다. 가장 먼저 생각해볼 수

2021년 6월 20일
·
0개의 댓글
post-thumbnail

스프링 API 권한 체크 어떻게 할 수 있을까?

제가 진행하고 있는 쇼핑몰 서비스는서비스 이용 목적에 따라 일반 사용자, 판매자, 관리자로 권한을 나눌 수 있습니다.따라서 Member 도메인 클래스에 권한을 의미하는 필드를 추가하려고하는데 이때 숫자를 프로퍼티에 사용하면 타입이 안전하지 않아 위험할 수 있습니다.정수

2021년 6월 4일
·
0개의 댓글
post-thumbnail

스프링 유효성 체크 및 예외처리

2021년 5월 6일
·
1개의 댓글
post-thumbnail

컨트롤러 Handler 메소드 호출시 사용할 수 있는 어노테이션 및 클래스

클라이언트 요청부터 서버의 응답을 받기까지의 과정을 정리하면 아래와 같습니다.요청 body에 들어있는 json 데이터는 위와 같습니다.컨트롤러에서 요청 body 의 json데이터를 Java Object로 받기 위해 @RequestBody 어노테이션을 사용해야 합니다.@

2021년 5월 5일
·
0개의 댓글