Graceful shutdown 이란 무엇이며, 언제 사용하나요?
따로 포스팅해서 공부함. 요약하면 서버 재배포 등 서버가 중단될 때 갑자기 꺼져버리면 기존의 트랜잭션이 있던 것들에 문제가 생길 수 있음. 그래서 기존 작업 중인 건 모두 마무리되면 안전하게 종료하는 방식.
종료에 따른 시스템의 영향을 최소화 하는 것
운영체제에서 프로세스 종료를 위한 시그널을 보내면 바로 프로세스를 종료하는 게 아니라 시그널을 받아서 안전하게 종료 처리를 하고 프로세스를 종료하는 것
Event driven architecture 는 일반적인 개발 방법 (function call) 과 장단점은 어떤 것들이 있나요?
이것도 요약하면
이 기능을 구현하면서 DB 와 통신시 어떠한 transaction propagation, isolation level 을 사용하는게 적절할까요?
거의 대부분의 전파 옵션은 REQUIRED이면 되지 않을까? 생각함.
isolation level을 쓴다는 건 유저 생성 트랜잭션과 포인트 생성 트랜잭션이 분리되었을 때는 가정하는 건가?
그렇다면 이 때의 격리 수준은
READ UNCOMMIITED(읽기 미확정)면 안 됨. 포인트 트랜잭션이 커밋되지 않은 유저 트랜잭션을 읽으면 안 됨. 왜냐면 유저가 없는데 포인트가 생성되면 미아 포인트가 생긴다.
READ COMMITTED(읽기 확정)면 될 것 같다. 어차피 포인트 객체는 user를 읽기만 하면 되니까.
REPEATABLE READ(반복 가능한 읽기) 한 트랜잭션이 읽기를 시작하면 다른 트랜잭션이 수정하지 못하게 한다. 근데 어차피 유저 객체과 포인트 객체 생성 시 유저 객체가 바뀔 일이 없으니까 오버 스펙.
SERIALIZABLE (직렬화 가능)는 아예 트랜잭션이 서로 침범하지 못하는 건데 이것도 오버 스펙
회원 가입 요청 api 의 request 부터 response 까지 정확한 흐름 (behind the scene) 에 대해 설명해 주세요.