7주차. 락을 통한 동시성 제어 - 설명편
들어가기 앞서 이번 포스팅의 주제는 락을 통한 동시성 제어와 관련된 내용입니다. 이번 프로젝트에서 기술적으로 가장 많이 고민했던, 그리고 가장 많은 에러와 수정이 발생했던 부분이 바로 동시성과 관련된 부분이었습니다. 또한 다른 동기들이 ‘이거도 글로 정리해서 올려주시나요?’를 가장 많이 물어본, 나름 관심이 높았던 주제였던 만큼 다른 분들에게도 ...
들어가기 앞서 이번 포스팅의 주제는 락을 통한 동시성 제어와 관련된 내용입니다. 이번 프로젝트에서 기술적으로 가장 많이 고민했던, 그리고 가장 많은 에러와 수정이 발생했던 부분이 바로 동시성과 관련된 부분이었습니다. 또한 다른 동기들이 ‘이거도 글로 정리해서 올려주시나요?’를 가장 많이 물어본, 나름 관심이 높았던 주제였던 만큼 다른 분들에게도 ...
오늘의 주제는 Resilience4j입니다. 이 글은 Resilience4j 공식문서를 학습하면서 정리한 내용입니다. Resilience4j Resilience4j는 Netflix의 Hystrix와 유사한 fault tolerance 라이브러리입니다. fault tolerance란 시스템의 일부가 장애가 나더라도 전체 시스템은 중단 없이 잘 동작할...
프로젝트를 설계할 때는 알림 시스템을 간단하게 생각하고 설계했었다. 하지만 알림을 구현하기 시작하면서 재 설계의 필요성을 느꼈다. 알림 시스템의 요구사항 알림 템플릿 먼저 알림 시스템의 템플릿을 알아보자. 배송이 시작되었습니다. [알림 메세지] https://mypage [연관된 페이지] 알림 형태 수신자 ...
이번주 주제는 카프카에 대한 기본 지식들을 정리해 봤습니다. 카프카 핵심 가이드 책을 공부하면서 정리한 내용임을 참고해 주시면 감사하겠습니다. 구성 하나의 Broker는 여러 개의 Topic으로 구성되어 있습니다. 하나의 Topic은 여러 개의 Partition으로 구성되어 있습니다. 하나의 Partition은 여러 개의 Repli...
멀티쓰레드 환경의 테스트 코드를 작성하면서 알게된 내용을 공유하려고 합니다. 혼자 생각하고 정리한 내용이라 부정확한 내용이 포함되어 있을 수 있습니다. 만약 틀린 내용이 있다면 알려주시면 감사하겠습니다. 자주 활용하는 클래스 ExecutorService 공식문서 Executor를 상속받고 있습니다. Executor는 Runnable 객체를...
평소 프로젝트 구조를 어떻게 설계하는게 좋은지? 3-layered-architecture를 주로 사용하고 있는데 어떤 계층에 어떤 코드가 들어가는게 가장 좋은지에 대한 고민이 있었습니다. 고민 중 좋은 글을 발견했고, 일부 내용을 이번 프로젝트에 직접 적용해보고 있습니다. 이번 주 발표 주제는 해당 구조를 적용하면서 느낀 점들에 대한 공유해 보도록...
복합키란 복합키 정의를 살펴보면 다음과 같습니다 In database design, a composite key is a candidate key that consists of two or more attributes (table columns) that together uniquely identify an entity occurrence (ta...
트랜잭션이란 트랜잭션은 데이터베이스의 상태를 변화시키기 위해 수행하는 작업의 단위를 의미합니다. 일련의 작업 묶음이 안정적으로 처리되는걸 보장해주는 개념이 바로 트랜잭션이며 모든 작업이 성공해서 데이터베이스에 정상 반영하는 것을 커밋, 작업 중 하나라도 실패해서 작업 이전으로 되돌리는 것을 롤백이라고 합니다. 트랜잭션은 ACID라는 특성을 가지고...
이 글은 테스트 코드가 낯선 팀원에게 테스트 코드에 대한 지식을 공유하기 위해 쓰여진 글입니다. 인프런 - Practical Testing: 실용적인 테스트 가이드 내용을 바탕으로 쓰여진 글입니다. 정답을 제시하는 게 아닙니다. 다만 저는 이런 의견을 가지고 테스트 코드를 작성하고 있다는 걸 설명하는 글입니다. 테스트 코드는 왜 작성...
MSA 아키텍처로 설계하기 아키텍처에는 대표적으로 monolithic, micro service architecture 가 있다. 클라이언트와 서버가 합쳐진 하나의 거대한 아키텍처이고, msa는 작고 독립된 서비스들로 구성된 아키텍처로 독립적인 배포와 서비스별로 다른 기술을 사용해도 되는 장점을 가지고 있다. 독립적 배포와 장애 확산을 줄일 수 있...