분류 전체보기48 redis lock 1부 (feat. Redlock) 분산 락이란?분산 락은 여러 개의 클라이언트가 특정 리소스에 접근할 때, 한번에 하나의 클라이언트만 접근(mutual exclusive) 할 수 있도록 하는 메커니즘이다.분산락의 조건분산 락은 최소한 아래의 조건을 만족시켜야한다.safety: 하나의 클라이언트만 리소스에 접근할 수 있어야한다. (mutual exclusive)deadlock free: 특정 클라이언트가 락 획득 후 죽는다고 해도, 결국에 다른 클라이언트가 락을 획득 할 수 있어야한다.fault tolerance: 일부 레디스 노드가 죽는다고해도, 대다수가 살아있다면 락 획득을 할 수 있어야한다.redlock 이전 라이브러리들의 문제?레디스 공식문서에 의하면, redlock 이전의 라이브러리들은 문제가 있었다고 한다.그것은 redis re.. 2024. 5. 3. 나는 테스트에서 @Transactional 붙이지 않겠다.. (feat. 동시성 삽질기) 재민님 유튜브: https://www.youtube.com/watch?v=PDhN6aiF7QQ 향로님 블로그: https://jojoldu.tistory.com/761토비님 페이스북 게시글: https://www.facebook.com/tobyilee/posts/pfbid037KmQz4TbwBfgkAXc8JjMjipMesF9iuTTWvMtUKirr3742cGfvVrq4Aft33CGmLWSl 로그인 또는 가입하여 보기Facebook에서 게시물, 사진 등을 확인하세요.www.facebook.com 한 때, 테스트에 @Transactional 을 붙일 것이냐 말 것이냐에 대한 논쟁이 개발자 커뮤니티에서 핫했었다.나는 별다른 생각이 없이, 회사에서 안 쓰기도하고 변경감지 관련해서 한번 실수한 이후로 그냥 안쓰고.. 2024. 5. 2. mikro-orm auto increment issue 등록 후기 이슈등록: https://github.com/mikro-orm/mikro-orm/issues/5460 Mysql auto_increment_increment setting is not work. · Issue #5460 · mikro-orm/mikro-orm Describe the bug If you set mysql variable auto_increment_increment to 2, When saving multiple entities, pk should be incremented by 2. However, if you use the following code in the MySqlDriver fil... github.com [ 문제 상황 ] 사내에서 mikro-orm 을 Mysql 과 사용하고 있.. 2024. 4. 17. AWS 네트워크 - VPC, ELB, Route53 1. VPC (Virtual Private Cloud)가상 네트워크로써 네트워크 환경을 논리적으로 격리시켜줌.환경을 분리(dev, live)보안, 트래픽 등을 분리하나의 VPC 안에는 여러 서브넷이 존재함.1.1 서브넷VPC 내에서 리소스를 그룹화 한 것을 서브넷이라고 함. 여기서 리소스라 함은, ec2 와 같은 것을 뜻함.서브넷은 퍼블릭 서브넷과 프라이빗 서브넷으로 나뉜다.퍼블릭 서브넷은 인터넷 게이트웨이를 통해 인터넷과 연결될 수 있는 서브넷이고, 프라이빗 서브넷은 VPC 내에서만 통신이 가능하다. (NAT 게이트웨이를 통하면 외부 통신 가능. 아래에서 추가 설명)1.2 라우팅 테이블라우팅 테이블은 네트워크의 라우팅 정보를 담는 테이블이다.VPC 생성시 라우팅 테이블이 생기고, 서브넷마다 라우팅 테이.. 2024. 3. 24. jackson for kotlin part3. 삽질기 (feat. jacksonObjectMapper) https://pius712.tistory.com/19 jackson for kotlin part2. 커스터마이징 앞선 글에 이어서, 추가로 커스터마이징에 대해서 글을 쓰려고 한다. https://pius712.tistory.com/11 jackson for kotlin part1. 동작 원리 kotlin 을 사용하면, kotlin 용의 jackson library를 설치해야한다. implementation( pius712.tistory.com 위 글을 쓰면서, 잠깐 삽질을 했었다. 글을 쓰면서, 동작 확인차 테스트 코드를 만들어서 돌리는데 설정이 안먹히는 것이었다. 문제의 발단 serialize 를 설정해놓고 아래와 같이 테스트 코드를 돌렸다. 테스트 실패. // 설정 @Configuration cla.. 2024. 3. 10. jackson for kotlin part2. 커스터마이징 앞선 글에 이어서, 추가로 커스터마이징에 대해서 글을 쓰려고 한다. https://pius712.tistory.com/11 jackson for kotlin part1. 동작 원리kotlin 을 사용하면, kotlin 용의 jackson library를 설치해야한다. implementation("com.fasterxml.jackson.module:jackson-module-kotlin") spring initializer 로 스프링 프로젝트를 구성하다보면, 자동으로 해당 라이브러리가pius712.tistory.com Spring 부트에, JSON 형식의 요청을 하거나, 응답을 할 때는 ObjectMapper 인스턴스를 사용하게 된다.ObjectMapper 를 통해 marshalling, unmarsha.. 2024. 3. 10. 카프카 컨슈머 lock 삽질기 - 리밸런싱 3줄 선요약AWS 에는 스팟 인스턴스(Spot Instance)는 인스턴스가 죽을 수 있다.처리 도중 리밸런싱이 발생하면 오프셋 커밋을 하지 않아서 중복으로 메시지를 처리할 수 있다.컨슈머는 at least once 라는 것을 고려해서 개발해야한다.컨슈머 리밸런싱이란?카프카의 컨슈머 그룹내의 특정 컨슈머가 동작하지 않으면, 파티션을 다른 컨슈머에게 재할당하게 되는데, 이를 리밸런싱이라고 한다.리밸런싱은 크게 아래의 과정을 거치게 된다.트리거: 컨슈머 그룹에 변경 발생시 리밸런싱이 트리거 된다.파티션 재할당: 브로커는 그룹 코디네이터 역할을 하는데, 현재 컨슈머 그룹에 대해 파티션을 재할당한다.리밸런싱 진행프로세스 재게컨슈머를 추가하거나, 컨슈머가 장애가 나서 중단되는 경우에 리밸런싱이 일어나게 된다.일반.. 2024. 2. 26. 카프카 톺아보기 - 기본개념 애플리케이션 개발자의 입장에서 카프카에 대해서 간단하게 살펴보고자 한다. (깊게는 필자도 잘 모른다.)아파치 카프카는 분산 이벤트 스트리밍 플랫폼이다.일반적인 pub/sub 구조의 rabbitMQ, redis pub/sub 과 달리 메시지를 저장한다는 특징이 있다. 1. 브로커데이터를 쓰는 producer 와 데이터를 읽는 consumer 는 broker 를 통해서 데이터를 주고 받는다. 그리고 broker 는 발행된 데이터를 저장하는 공간이기도 하다.브로커는 하나의 서버에서 작동하며, 각기 다른 서버에서 작동하는 여러 브로커를 묶어서 클러스터로 구성할 수 있다. 카프카에서 브로커는 여러 역할을 하는데 크게 아래와 같은 역할을 한다. 해당 역할들에 대해서는 아래에서 추가적으로 살펴볼 것이다.컨트롤러데이.. 2024. 2. 25. mikro orm의 request context 주저리 회사에서 최근에 typeorm에서 mikro orm 으로 이동하기 시작했다. 일단 typeorm 에 비해 mikro orm 이 가지는 장점들이 분명히 있음에도 주의해야할 사항이 있어보였다. 사용하다가 조금 개념이 헷갈리는 부분이 있었는데, request context, identity map 이 그 부분이다. identity map 은 JPA 의 persistence context 와 비슷 혹은 같은 개념이다. 그런데, nest에서 mikro orm 을 사용하면, 이 context 가 request 단위로 할당된다는 점이다. 이는 OSIV 와 비슷한 개념인데, 아래 포스트에 설명이 되어있다. https://pius712.tistory.com/14 영속성 컨텍스트와 트랜잭션의 관계 1. 영속성 컨텍스트와 .. 2024. 2. 18. 이전 1 2 3 4 5 6 다음