
Intro항해플러스에서 진행중인 프로젝트인 콘서트 예약 서비스를 분산환경이라고 가정하고, 기존에 DB 락을 통하여 동시성 제어가 되어있던 부분을 분산락을 통해 제어하도록 리팩토링하고자 하였습니다. 이전에 인프런 강의를 수강하며 가볍게 스프링 프로젝트에 분산락을 적용해봤던 경험은 있었으나, 어디까지나 간단하게 "적용만" 해봤던 터라 프로젝트에 어떻게 "잘" 적용할 수 있을지에 대한 고민을 해본 것은 이번이 처음이였습니다. 이에 대하여 컬리 기술블로그의 풀필먼트 입고 서비스팀에서 분산락을 사용하는 방법 - Spring Redisson 글이 많이 도움이 되었는데, 해당 글을 참고하여 다음과 같은 부분들을 고려하고, 좀 더 범용적으로 사용할 수 있도록 수정하여 적용하게 되었습니다. (이해를 위하여 한번 읽어보고..

어느날, 회사에서 에러 로그를 보던 중 UnexpectedRollbackException이라는 예외가 발생한 에러로그를 발견했습니다. 로그를 읽어보았을 때는 뭔가 기대하지 않은 롤백이 발생했다는 내용같은데, 왜 롤백이 발생했는지 호기심이 생겨 관련 내용을 쭉 파헤쳐 보았고, 그 과정 속에서 알게된 내용들을 글로 정리해두려 합니다. ※ 아래의 예제 코드들은 전부 여기 에서 확인할 수 있습니다. 예외 상황 재현먼저, 예외가 터지는 상황을 재현해보고 실습해보기 위하여 아래와 같이 코드를 구성해보겠습니다. - ParentServicepackage com.devchw;import lombok.RequiredArgsConstructor;import lombok.extern.slf4j.Slf4j;import org...
![[Datagrip] MySQL sqldump Export & Import](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FZAyox%2FbtsIZWnvGC5%2Fkd0CPlKAX2qvFo3LhRbFz0%2Fimg.png)
사전 준비덤프 파일을 생성할 Mysql 서버가 데이터그립에 연결되어 있어야 합니다mysqldump 파일 사용을 위하여 로컬 환경에 Mysql이 설치되어 있어야 합니다.생성된 덤프파일을 통하여 데이터를 불러올 스키마가 필요합니다.이 본문은 스키마 전체를 Export하고 Import 하는 것을 예제로 사용하였습니다. 따라해보실 경우에 참고해주세요. Export sqldump1. dump 파일을 생성할 스키마 우클릭 > Import/Export > Export with ‘mysqldump’ 2. 덤프 옵션 설정 옵션들이 복잡해보이지만, 하나하나 따져보면 그리 복잡하지 않습니다. 아래의 설명을 보시고 위 각각의 옵션들에 대하여 설명은 다음과 같습니다. `Path to mysqldump` : mysqldump 파..
도커로 젠킨스 설치, 설정 가이드 https://hub.docker.com/r/jenkins/jenkins 도커허브 사이트에서 Jenkins 검색 → 사용하고자 하는 JDK 버전의 태그가 달린 docker pull 명령어를 입력한다. 나같은 경우 자바 11버전이기에 태그가 latest-jdk11인 이미지를 다운로드 받았다. docker pull jenkins/jenkins:latest-jdk11 젠킨스 도커 공식 사이트 : https://github.com/jenkinsci/docker 위 링크에서 docker run 명령어 몇가지 예시를 살펴볼 수 있다. 나는 백그라운드에서도 실행을 유지하기 위하여 -d 옵션을 붙이고, -—name 옵션으로 컨테이너의 이름을 jenkins-server로 주어서 실행시켰..
보통 lombok을 사용하기위하여 build.gradle에 다음 코드를 추가한다. build.gradle // lombok compileOnly 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok' 그러나 위 부분만을 추가한다면 테스트코드에서는 lombok을 사용할 수 없는데, 이럴 땐 build.gradle에 다음의 코드를 추가하면 된다. build.gradle // 추가 testCompileOnly 'org.projectlombok:lombok' testAnnotationProcessor 'org.projectlombok:lombok'
Intro저는 현재 로컬환경에서만 개발을 진행하고 Front 부분과 따로 개발, 배포를 진행해본 경험이 없기 때문에 CORS 이슈를 만나본 적은 없지만, 언젠가 CORS 이슈를 겪게될 것은 자명한 사실이기 때문에 여러 사이트를 참고하여 간단하게 개념들을 정리해보고자 합니다. CORS, SOP란?SOP (Same-Origin Policy, 동일 출처 정책)자바스크립트 엔진 표준 스펙의 보안 규칙으로 하나의 출처(Origin)에서 로드된 자원(문서나 스크립트 등)이 호스트나 프로토콜, 포트번호가 일치하지 않는 자원과 상호작용하지 못하도록 요청 발생을 제한하고, 동일 출처(Same Origin)에서만 접근이 가능한 정책입니다. CORS (Cross-Origin Resource Sharing)CORS는 한 도메..
XSS란?XSS는 Cross Site Scripting의 약자로, 원래는 CSS가 맞지만 Cascading Style Sheet의 약자 CSS가 널리 사용되고 있으므로, 혼동하지않기위해 XSS라고 합니다.간단하게 공격자가 웹사이트에 자바 스크립트와 같은 스크립트 코드를 삽입해 사용자를 공격할 수 있는 방법입니다.XSS는 Reflected XSS, Stored XSS, DOM Based XSS 세 가지의 공격 형태로 분류할 수 있습니다. 이 포스팅에서는 Reflected XSS, Sotred XSS 두가지에 대하여만 정리해보겠습니다. Stored XSS (저장형 XSS)게시판과 같은 텍스트를 입력하고 서버에 저장되는 웹사이트에 공격자가 악의적인 스크립트 코드 를 삽입하여 사이트 서버에 저장시킵니다.그 후,..