전체 글 67

책<가상 면접 사례로 배우는 대규모 시스템 설계 기초> (읽는 중...)

가상 면접 사례로 배우는 대규모 시스템 설계 기초 : 알라딘16가지 실제 시스템 설계 면접 문제와 상세한 답안을 제시한다. 시스템 동작 원리를 시각적으로 보여 주는 188개의 도해로 설명하면서 4단계 접근법으로 면접 문제를 풀 수 있도록 돕는다. 이 책www.aladin.co.kr   1장. 사용자 수에 따른 규모 확장성어떤 데이터베이스를 선택할 것인가?관계형 vs 비관계형NoSQL : key-value, graph, document, column비관계형이 더 적절할 수도 있는 상황: 아주 낮은 응답 지연시간latency이 요구됨다루는 데이터가 비정형unstructured임데이터(json, yaml, xml 등)를 직렬화, 역직렬화 할 수 있기만 하면 됨아주 많은 양의 데이터를 저장해야 함수직적 규모 확..

Architecture 2025.04.06

책 <마이크로 서비스 패턴> (읽는 중...)

서비스 간 공유 라이브러리를 사용하고 싶은 유혹이 들겠지만, 변경 가능성이 조금이라도 있다면 별도의 서비스로 구현하는 것이 낫다. 서비스의 크기가 중요한 게 아니라 가장 짧은 시간에, 다른 팀과 협동하는 부분을 최소로 하여 개발 가능한 서비스를 설계해야 한다. 다른 서비스의 변경분 때문에 내가 맡은 서비스도 계속 바꾸어야 한다면 느슨하게 결합되지 않았다는 반증이다. 이건 distributed monolith다...1단계: 시스템의 작업을 식별한다."나는 음식점 주인으로서 주문을 접수해서 ~을 하고 싶다"고수준의 애플리케이션 도메인 모델을 대략적으로 그려본다. 도메인 명사를 분석하기. 핵심 클래스 생각해보기. (주문 접수: Consumer, Order, OrderLineItem, DeliveryInfo, ..

Architecture 2024.10.23

Validation

Validation, Data Binding, and Type Conversion :: Spring FrameworkThere are pros and cons for considering validation as business logic, and Spring offers a design for validation and data binding that does not exclude either one of them. Specifically, validation should not be tied to the web tier and should be easy to locdocs.spring.ioSpring 문서에서 말하는 Validation웹 계층에 국한되어서는 안 된다. 서비스 계층, 데이터 계층 등에서..

Application 2024.10.16

Http client

RestTemplatespring 3.0 ~synchronous, blocking1 thread per 1 requestthread safe여러 요청을 병렬로 처리하고 싶다면 connection pool을 사용한다. (수신 서버가 Keep-Alive를 지원해야 한다.)RestTemplate 생성 시 어떤 HttpClient, ClientHttpRequestFactory를 사용할 것인지 선택할 수 있다. (default: SimpleClientHttpRequestFactory, 그 외 Apache HttpComponents, Netty, OkHttp)https://docs.spring.io/spring-framework/reference/integration/rest-clients.html@Beanpubl..

Application 2024.09.24

Kotlin에서 SLF4J Logger 객체 생성하기

SLF4JSimple Logging Facade for Java로깅 인터페이스를 제공한다. (구현체 예: java.util.logging, logback, log4k)클라이언트는 SLF4J 추상화에 의존하면 실제 구현체를 몰라도 된다. (DIP) 스프링부트 web은 default로 logback를 쓴다." logging.level" 프로퍼티들을 통해 로깅 수준을 정할 수 있고, "classpath:logback.xml" 파일을 통해 구성을 할 수 있다. 롬복을 쓴다면 `@Slf4j`를 사용해 Logger 객체를 생성할 수 있다. @Slf4jpublic class someClass { public void someMethod() { log.info("test"); }} 위 코드는 아래와 ..

Kotlin 2024.09.20

책 <도메인 주도 개발 시작하기>

도메인 주도 개발 시작하기가장 쉽게 배우는 도메인 주도 설계 입문서. 도메인 주도 설계(DDD)를 처음 배우는 개발자를 위한 책이다. 실제 업무에 DDD를 적용할 수 있도록 기본적인 DDD의 핵심 개념을 익히고 구현을 통해 학www.aladin.co.kr (책에 있는 문장이 아닐 수 있음... 편집 있을 수 있음...)        Chapter 1. 도메인도메인 = 해결하고자 하는 문제 영역전문가나 관련자가 요구한 내용이 항상 올바른 것은 아니며 때론 본인들이 실제로 원하는 것을 정확하게 표현하지 못할 때도 있다. 대화를 통해 진짜로 원하는 것을 찾아야 한다.도메인에 따라 용어 의미가 결정되므로 도메인마다 각각의 다이어그램에 모델링해야 한다.처음부터 완벽한 개념 모델을 만들기보다 전체 윤곽을 이해하는 ..

Principal 2024.09.10

Kotest로 테스트 코드 작성하기

내가 쓸 것 같은 부분 메모‪ ⸜( ˶'ᵕ'˶)⸝    Kotest | KotestFlexible, powerful and elegant kotlin test framework with multiplatform supportkotest.io  Kotest는 세 가지 부분으로 구성되어 있다. 필요한 것만 쓰면 된다.Test framework - 테스트 작성하고 실행하기Assertions library - 단언문 작성하기Property testing - 어떤 속성을 만족하는지 랜덤 입력값으로 확인하기 Kotest는 멀티플랫폼 프로젝트다. (다른 플랫폼에서 사용하기 위해 재작성할 필요 없단 말)JVM/Gradle(Groovy)에서 사용하려면 다음과 같은 의존성 설정을 해준다.testImplementation ..

Kotlin 2024.09.09

메모) 인프콘 2024

[지금 무료] 인프콘 2024 다시보기 강의 | 인프런 - 인프런인프런 | 성장하는 IT인들의 축제, 인프콘 2024에서 진행된 오프닝 및 발표 세션을 영상으로 다시 보실 수 있습니다., ✅ 확인해주세요이 콘텐츠는 2024년 8월 2일 금요일 진행된 인프콘 2024 발표 녹www.inflearn.com     # 혹시 당신은 데이터를 모르는 백엔드 개발자인가요?데이터 엔지니어는 데이터를 열 중심으로 본다. 데이터 카탈로그 - 데이터 맥락 공유 위해 사용 (문서, 코멘트, 검색), 데이터허브(오픈소스)대용량 트래픽... 대용량 데이터 - 분산 처리분석 환경은 분리 운영 - apache spark, hadoop (파일 단위 시스템), s3 적재애플리케이션을 거치지 않고 디비 데이터를 직접 조작하는 경우가 많..

Memo 2024.09.07

책 <아파치 카프카 애플리케이션 프로그래밍 with 자바> 1 ~ 3장

아파치 카프카 애플리케이션 프로그래밍 with 자바아파치 카프카로 새로운 개발 트렌드를 준비하는 분들을 위해 집대성한 아파치 카프카 최종 솔루션이다. 국내 서적 중 최초로 카프카의 핵심 기능인 미러메이커2(MirrorMaker2)에 대한 설명과 스프www.aladin.co.kr      [ ] : 나중에 체크하려고 하는 부분 Chapter 1. 들어가기탄생링크드인에서 파편화된 데이터 수집 및 분배 아키텍처 운영을 위한 문제를 해결하기 위해 개발소스 애플리케이션과 데이터가 최종 적재되는 타킷 애플리케이션의 연결각각의 애플리케이션끼리 연결하여 데이터를 처리하는 것이 아니라 데이터를 한 곳에 모아 처리하도록 중앙집중화데이터 포맷은 사실상 제한이 없다. 직렬화, 역직렬화를 통해 ByteArray로 통신하기 때문..

Data engineering 2024.09.04

Kotlin으로 JPA Entity 정의하기

JPA specJPA 엔티티와 프로퍼티의 제약 사항에 대해 먼저 알고 가야한다.https://jakarta.ee/specifications/persistence/3.1/jakarta-persistence-spec-3.1.pdf The entity class must be annotated with the Entity annotation.have a public or protected no-arg constructor.be a top-level class. (An enum or interface must not be designated as an entity.)not be final.implement the Serializable interface, if an entity instance is to be ..

Kotlin 2024.09.04