1. Zipkin 이란?Zipkin은 분산 시스템에서의 요청 추적을 위한 오픈소스 도구이다. 마이크로서비스 아키텍처(MSA)와 같이 여러 서비스가 상호작용하는 환경에서 어떤 요청이 어디서 지연되었는지, 문제가 발생했는지를 추적하고 분석할 수 있게 도와준다. Zipkin으로 추적할 수 있는 분산 트랜잭션은 대표적으로 HTTP, gRPC가 있다. 나중에 다룰 내용이지만, Kafka를 사용한 통신 시 Zipkin에서는 흐름을 추적할 수 없다. 이를 해결하기 위한 내용도 다룰 예정이니 참고바란다. 2. Zipkin 관련 컴포넌트 용어 정리Zipkin Client Library서비스에서 트래이스 정보를 수집하여 Zipkin 서버의 Collector로 데이터를 전송하는 역할을 한다. Colle..
1. 개요김영한 강사님의 강의를 들으며 웹 개발을 공부하기 시작한 이후, 기본 키 전략을 설정할 때 항상 인조키를 사용해왔다.특별히 이유를 고민해보지 않고 습관적으로 인조키를 선택해왔는데, 최근 코드 리뷰 중에 "이미 고유한 값이 존재하는데, 왜 굳이 별도의 컬럼을 추가해 인조키를 사용했느냐"는 질문을 받게 되었다. 한 번도 깊이 생각해본 적 없는 부분이었기에, 이번 기회에 자연키와 인조키의 장단점을 비교해보고, 어떤 키를 선택하는 것이 더 좋은지 정리해보려 한다. 2. 자연키? 인조키?자연키란 비즈니스 모델에서 자연스럽게 나오는 속성이다.회원 데이터를 예로 들면, 회원 ID는 고유한 값이며 변경될 가능성의 거의 없다. 또한 주민등록번호도 고유한 값으로 자연키의 한 예가 될 수 있다. ..
1. 개요매일 개발하며 사용해오던 @Transactional 어노테이션에 대해 아는게 너무 없다고 느꼈다. 여러 전파 전략, 옵션이 있다는거 정도만 알고있었지만, 깊게 고려해보진 않았던 것 같다. 이참에 공부하고 제대로 알고 사용하고자 이 글을 작성한다. 2. 트랜잭션이란?@Transactional 을 알아보기 앞서 트랜잭션에 대해 한번 더 짚고 넘어가자. 트랜잭션(Transaction)의 사전적 의미는 거래이고,컴퓨터 과학 분야에서의 트랜잭션(Transaction)은 "더이상 분할이 불가능한 업무처리의 단위"를 의미한다. 이것은 하나의 작업을 위해 더이상 분할될 수 없는 명령들의 모음, 즉, 한꺼번에 수행되어야 할 일련의 연산모음을 의미한다. 데이터베이스와 어플리케이션의 데이..
1. 개요최근 입사한 회사에선 Hexagonal Architecture와 MSA를 도입하고 있다. 학습을 위해 여러 컨퍼런스 영상과 블로그를 보고 있지만 역시 개발자는 백문이불여일타 아니겠는가? 레이어드 아키텍처로 구성된 프로젝트를 헥사고날 아키텍처로 리펙토링 하고자 한다. 리액트를 학습하기 위해 만든 작은 todo app 프로젝트가 있는데 이 프로젝트로 지지고 볶고 여러 공부를 하고 있다. 이번에도 이 프로젝트 가지고 지지고 볶아 볼 것이다. 2. Hexagonal Architecture란? 간단하게 헥사고날 아키텍처에 대해 언급하고 넘어가면 헥사고날 아키텍처는 애플리케이션의 내부 로직과 외부 인터페이스(예: 데이터베이스, 웹 등)를 분리하여 독립성을 강화하는 아키텍처 스타일이다. ..
1. 개요Spring Boot로 웹 개발만 하다가 c# 으로 할 수도..? 있게 됐는데 c# 이나 .asp.net core 관련해선 국내 자료가 진짜 너어어어무 없다. 객체지향, DI 등 Spring Boot와 굉장히 유사하다고는 하지만 보고 배울 자료들이 너무 부족하다는걸 느꼈다. 새삼 Java 생태계가 크구나 라는 생각이 들었다.. 그래서 c# 공부를 하며 배운 내용을 공유하고자 글을 쓴다. 원래라면 프로젝트 구성하는 내용 따윈(?) 블로그에 절대 쓰지 않지만, Java, Spring Boot 만 하던 나에게 c#은 시작 조차 어려웠기 때문에 상세하게 기록하도록 하겠다. 2. Clean Architecture란? 클린 아키텍처가 무엇인지 정의하기에 앞서, 아키텍처란 무엇인가..