MSA구조의 서비스들이 있다고 생각해보자. 하나의 서비스에서 데이터를 변경하면 다른 서비스들에게도 변경되었음을 알려야 하는 경우가 많다. 예를 들어 주문 서비스에서 주문이 생성되었을 때, 결제 서비스와 재고 서비스가 이 이벤트를 감지해야 결제와 재고 차감을 할 수 있다. 이를 위해 메시지 브로커(Kafka, RabbitMQ)를 사용한다고 치자. 어떤 문제가 발생할 수 있을까?
스프링 트랜잭션 전파 쉽게 이해하기
트랜잭션이란 데이터베이스 작업을 하나의 묶음으로 관리하는 기능
이다. 이 묶음은 한 배를 탄 운명이라서 안에 몇 가지 내부 기능이 들어 있든 둘 중에 하나다. 전부 성공하거나, 전부 실패하거나.
예를 들어, ATM에서 계좌이체를 한다고 생각해보자. A의 계좌에서 10만원이 출금되고
B의 계좌에 10만원이 입금되어야 한다.
만약 출금만 되고 입금이 되지 않으면 심각한 문제다. 이렇게 모든 작업이 다 성공해야 성공으로 인정하는 것을 트랜잭션이라고 한다.
트랜잭션의 4가지 특성인 ACID도 위 개념을 이해하고 나면 자연스럽게 이해가 된다.
코드 리뷰는 어떻게 해야할까?
남에게 코드 리뷰를 받는 건 왜 항상 긴장되는 걸까? 내 작업물과 나를 동일시 하면 안 된다는 건 알고 있지만, 그래도 열심히 짠 코드에 생각지도 못했던 결함이 있었다는 걸 남을 통해 알게 되는 건 참 감사하면서도 부끄러운 경험이다ㅠ_ㅠ. 하지만 이런 부끄러움이 있어야 더 성장하려는 의지가 생기는 거겠지. 이번에는 좋은 코드 리뷰를 하기 위해 고려해야 할 것들에 대해 정리해보았다. 내가 받는 코드 리뷰도 중요하지만, 남에게 해 줄 때도 성의를 보여야 한다는 것을 잊지 말자!
[독서기록] 적을 만들지 않는 대화법
📖 제목 : 적을 만들지 않는 대화법
🙋♂️ 저자 : 샘 혼
어릴 땐 논쟁을 하면 무조건 이겨야 했다. 조금 더 철이 들고 나니 때로는 관계를 위해 내가 옳아도 져 줘야 할 때가 있다는 것을 알게 되었다. 하지만 여전히 종종 이럴 땐 어떻게 말하는 게 제일 나았을까
하고 고민하게 되는 순간들이 있다. 일부러 적을 만들고 싶은 사람은 아무도 없지만, 내 의견을 관철시키면서 관계도 유지하려면 많은 노력이 필요하다. 이 책은 상대방과 내 마음을 동시에 살피는 방법을 여러가지 사례들과 함께 소개하고 있다. 오래 기억하고 싶은 몇 가지 사례들을 정리해둔다.
Native Query, Query Method, QueryDSL, JPQL 차이와 장단점 알아보기
MyBatis를 쓸 때는 항상 SQL을 작성해서 사용해야 했지만 JPA를 사용하면 몇 가지 선택지가 생긴다. Native Query, Query Method, QueryDSL, JPQL
인데, 이 각각의 방식들이 어떻게 생겼고 장단점은 뭔지, 어떤 경우에 사용하면 좋은지에 대해 정리해보자.
[독서기록] 운명을 바꾸는 말하기 수업
📖 제목 : 운명을 바꾸는 말하기 수업
🙋♂️ 저자 : 이영선
어디가서 말 못한다는 말은 안 듣고 사는데 최근 들어 여기저기 면접을 보러 다니면서 고민이 생겼다. 두괄식으로, 핵심만 간결하게 전달
해야 한다는 걸 머리로는 아는데 잘 보이고 싶은 곳일수록 바보 같이 대답하게 되어서다. 좋아하는 사람 앞에서 더 멍청한 행동을 하게 되는 것처럼, 면접관들에게 구구절절하게 불필요한 설명을 덧붙여가며 어떻게든 나에 대해 한 줄이라도 더 설명하려 하는 내 모습이 싫어서 말하기 방법에 대한 책이라도 읽어보자는 결심을 했다.
그리고 인성 면접의 단골 질문인 동료와 의견이 다를 때 어떻게 대처 하시나요?
에 대해서도 고민하게 된 요즘이다. 나는 데이터 기반으로 더 나은 방법을 채택하는 데에 거부감이나 서운함이 없다. 일을 할 때 감정적으로 대처하는 동료를 더 어려워한다. 하지만 이건 일이니까 감정을 완전히 배제한 대화
를 하는 게 정말 맞는 걸까? 하는 의문을 오래 전부터 가지고 있었다. 고민 끝에 내 나름대로의 대처 방법을 가지게 되었고 커뮤니케이션에서도 실제로 많은 효과를 보았지만, 왜 그래야 하는지를 설명하자니 어려웠다. 이 책에는 왜 그렇게 말해야 하는지
에 대한 이야기가 실려 있다. 아래는 인상적이었던 부분을 내 경험과 함께 정리한 내용이다.
Node.js에 저장된 데이터에 인덱스 붙이기, 데이터 삭제하기 4
🙋♂️1. Node.js로 5분만에 API 만들기
🙋♂️2. Node.js로 POST API 만들기
🙋♂️3. Node.js로 데이터 저장하기
MongoDB에는 id를 Auto Increment 하는 기능이 없다. 게시판의 글번호 같은 기능을 만들려면 따로 구현이 필요한데, 이번에 어떻게 하는지 알아보자. 그리고 게시물을 삭제하는 것까지 해 볼 생각이다(Update, Delete).
Node.js로 데이터 저장하기 3
NodeJS로 간단한 GET/POST API 구현을 해 보았으니 이번에는 데이터를 저장하고 가져오는 것 까지 해보자. DB는 MongoDB를 사용했지만 아무거나 상관없다.
🙋♂️1. Node.js로 5분만에 API 만들기
🙋♂️2. Node.js로 POST API 만들기
RDBMS와 NoSQL의 차이와 장단점을 알아보자
요즘 구인 공고를 보면 온갖 NoSQL 써본 사람🙋♂️을 구하는 곳이 무척 많다. NoSQL의 장점이 대체 뭐길래 그렇게들 쓰려고 하는지, 반대로 RDBMS를 쓰는 이유는 뭔지 정리해보려고 한다.
Node.js로 POST API 만들기 2
앞선 포스팅에서 NodeJS 설치와 간단한 GET API를 구현해보았다. 이번에는 POST 방식으로 데이터를 전송하는 방법을 알아보자.
🙋♂️1. Node.js로 5분만에 API 만들기