목록개발지식 (4)
영호
들어가면서 이전 포스팅에서 구현한 namedLock 에 이어서 multi-datasource 와 AOP 를 적용하는 과정에 대해 적어보겠습니다. 전체 코드 github입니다. Multi-datasource 가 필요한 이유 namedLock 을 얻는 datasource 와 다른 비즈니스 로직을 수행하기 위한 datasource가 동일한 경우 커넥션이 부족할 수 있습니다. 만약, namedLock 을 얻으려는 요청이 갑자기 몰린다고 생각해봅시다. 그러면 해당 요청에 할당된 커넥션은namedLock 을 얻기 위해 기다릴 것입니다. 물론 timeout 을 설정해서 대기 시간을 조절할 수 있지만, 해당 시간 동안 비즈니스 로직 수행에 필요한 커넥션을 사용한다는 사실은 변하지 않습니다. 이러한 이유로 namedLo..
들어가면서 분산서버에서 발생하는 동시성 문제를 어떻게 해결할 수 있을까 고민하다가 namedLock 이란 개념에 대해 알게되어 이를 간단하게 구현해본 과정을 정리하려고 합니다. 혹시 잘못된 부분 있으면 언제든지 댓글 달아주시면 감사하겠습니다~ 전체코드 주소입니다. 다음 포스팅 (AOP, multi-datasource 적용) 예제 상황 수강신청 상황을 예제로 사용할 예정입니다. 정원이 있는 강의에 여러 명의 사용자가 수강신청 요청을 보낼 때, 강의 정원 만큼만 수강신청이 가능한 상황입니다. 물론 수강신청은 순서도 중요하지만 이번 포스팅에선 동시성 제어에만 초점을 맞춰주시면 감사하겠습니다. Lecture 는 강의 엔티티이고 강의 정원 (restCount) 필드를 가지고 있습니다. LectureStudent ..
들어가며 이번 글에서는 제가 프로젝트를 진행하며 에러를 수정하다 알게 된 CLI 관련된 | 연산과 || 연산의 차이에 대해 포스팅해보겠습니다. 에러 발생 상황 jenkins의 pipeline과 docker를 이용해 프로젝트 배포를 진행하는 상황. 배포의 마지막 과정에서 Docker이미지를 실행하기 전, 아래 코드로 이미 실행 중이던 컨테이너가 존재하면 중지 및 삭제하는 명령어 실행. docker ps -a -q --filter name={container} | grep -q . && docker stop {container}&& docker rm {container} | true 그러나 해당 명령어에서 에러가 발행하면서 배포가 이루어지지 않음. grep명령에서 -q 옵션은 출력을 하지 않는 옵션입니다. ..
Library란? Library란 쉽게 도구라고 생각할 수 있다. 내가 원할 때 호출해서 사용하면 되기 때문입니다. 예를 들어, bcrypt라는 라이브러리를 사용하고 싶으면 내가 원하는 로직에서 호출해서 사용을 할 수 있습니다. Framework란? Framework는 뼈대라고 생각하면 됩니다. Framework는 개발자에게 서비스를 완성하기 위한 뼈대를 제공해주고, 개발자는 제공된 뼈대 위에서 코드를 작성해 서비스를 완성할 수 있습니다. 예를 들어, 장고 프레임워크에서는 url을 설정하기 위해서는 반드시 파일명을 url.py로 한 후 코드를 작성해야 정상적으로 동작한다. 장고 프레임워크가 내 코드를 동작시키는 것입니다. 정리 library와 framework의 차이점을 간단하게 표현하자면 "흐름의 제어..