분류 전체보기 474

[System Design Interview] 02. 개략적인 규모 측정

가상 면접 사례로 배우는 대규모 시스템 설계 기초 (System Design Interview) - 저 : 알렉스 쉬, 역 : 이병준 을 읽고 정리한 글입니다. 2장의 내용은 아직 아는게 적어서 그런것인지 내용도 많지 않고 크게 와닿지 않아, 짧게 정리합니다. 개략적인 규모 추정을 효과적으로 하는데 필요한 기본기 [목차] 개략적인 규모 추정 2의 제곱수 응답지연 값 가용성에 관계된 수치들 트위터 시스템 설계 예시 📌 2장 - 개략적인 규모 추정 1. 개략적인 규모 추정(back-of-the-envelope estimation)이란 보편적으로 통용되는 성능 수치상에서 사고 실험(thought experiments)를 행하여 추정치를 계산하는 행위 즉, 어떤 설계가 요구사항에 부합할 것인지를 보기 위한 것 ..

[Junit] @ParameterizedTest 객체에 값을 자동으로 넣어주는 Auto Param - @autosource

지인이 테스트 코드를 짤 떄, 파라미터의 값을 자동으로 세팅해주는 요상한게 생겼다고 해서 사용을 해보았습니다. 강남언니 CTO 이규원님이 만든 오픈소스라고 하더군요 AutoParams는 AutoFixture에서 영감을 받은 Java의 매개변수화된 테스트를 위한 임의 테스트 데이터 생성기입니다. Auto Param 이 제공하는 기능은, 매개변수에 값을 자동으로 주입해줍니다. 리터럴 변수, Enum, Object, Generic, Collection, Primitive Type Stream 까지 지원을 해줍니다.. (굉장해) @AutoSource 사용해보기 @ParameterizedTest 와 @AutoSource 어노테이션을 사용이용해서 간편하게 사용할 수 있습니다. Auto Param을 사용하기 위해서는..

[Java] Double to Long 형 변환

아래의 3가지 방법이 있는데, 다른 타입으로 명시적으로 변환하는 캐스팅 (long) a 가 별로 안좋을거라 생각했는데, 박싱 후 언방식하는 방식이 더 안좋을 거 같다는 생각이 들었슴당.. 생각난김에 짧은 기록 ㅎㅎ @Test void test() { double a = 12.23213; //명시적 형변환 assertThat((long) a).isEqualTo(12L); assertThat(1 / (long) a).isEqualTo(1 / 12L); //박싱 후 언방식 - 비추 assertThat(Double.valueOf(a).longValue()).isEqualTo(12L); //Math 함수의 사용 assertThat(Math.round(a)).isEqualTo(12L); }

Java/Java 문법 2022.12.27

[System Design Interview] 01. 사용자 수에 따른 규모 확장성 - 인프라 확장

가상 면접 사례로 배우는 대규모 시스템 설계 기초 (System Design Interview) - 저 : 알렉스 쉬, 역 : 이병준 을 읽고 정리한 글입니다. 1장에서는 사용자 수에 따른 서비스 규모의 확장 흐름에 대해서 이야기합니다. 단일서버부터 시작하여, 디비 분리, 서버 분리, 물리적인 데이터센터의 분리 등 서비스 규모가 어떤식으로 확장되는지 큰 흐름을 파악할 수 있는 장이였습니다. ➡️ 사용자 수에 따른 적절한 시스템을 설계하기! [목차] 단일서버 구성 데이터베이스의 분리 수직적 규모확장 vs 수평적 규모확장 캐시 CDN 무상태 웹 계층 (Stateless) 데이터 센터 메시지 큐 데이터베이스의 규모 확장 (샤딩과 파티셔닝) 1. 단일 서버 복잡한 시스템을 설계하기전에 모든 컴포넌트가 단 한대에..

[Spring] JPA 영속성 컨텍스트의 시작 범위 (Lazy Loding proxy 객체 조회 시 에러가 나는 이유)

many to one 관계에 있는 엔티티를 jpa 즉시로딩에서 지연로딩으로 바꾸었더니 생각치 못했던 곳에서 생긴 문제의 기록입니다. 결론 더보기 jpa 지연로딩의 proxy 객체를 호출할 떄면, proxy 는 영속성 컨텍스트에서 데이터를 조회합니다. 즉 준영속 상태라면 proxy 객체와 실제객체를 매핑시킬 수 없습니다. 영속성 컨텍스트의 생명주기는 트랜잭션의 생명주기와 동일합니다. 📌 문제 상황 회사 코드에서 N+1 문제가 발생하는 부분이 있어 몇일 전 가벼운 마음으로 @ManyToOne 관계에 있는 엔티티를 Eager 로딩에서 Lazy 로딩으로 바꿔 주었다. 어치파 지연로딩으로 바꾼다고 하여도, 객체를 불러올 때 Proxy 객체에서 필요하면 엔티티를 조회하기 때문에 진정한 N+1 문제의 해결방안은 아니..

Spring/Spring Boot 2022.12.15

[Jenkins] bitbucket - Jenkins 연동, merge 시 jenkins 이벤트 발생시키기 (with Generic Webhook Trigger)

CI/CD 의 부푼 꿈을 안고 Bitbucket jenkins 연동을 개선해보고자 합니다. 📌 목표 Bitbucket Pull Requset Merge 시 Jenkins 에서 branch 별 별도의 event 발생시키기 (bitbucket jenkins branch merge reloading) 📌 시나리오 bitbucket 에 webhook 을 등록하여 merge 를 triger 로 등록합니다. 이벤트 발생을 필요로하는 jenkins 서버 url 을 webhook 에 등록시키고 Jenkins Generic Webhook Trigger 플러그인을 사용하여 Branch 별로 이벤트를 각각 발생시킬 수 있도록 설정해줍니다. [목차] 웹 훅 이란 bitbucket webhook 설정 bitbucket webh..

Infra/CI, CD 2022.12.13

젠킨스(Jenkins) vs Code Build vs Git Actions

모두 빌드 자동화의 툴 사이드프로젝트에서 팀원과 인프라 구축을 위해 ci.cd 구축을 어떤 툴을 이용해서 진행할거냐를 의논하기위해 정리한 글입니다. 따라서 매우매우 가볍고 간단하게만 비교 정리한 글! ➡️ 결론은 jenkins로 해보기로함 [목차] jenkins 란 code build 란 git actions 란 jenkins vs git actions Jenkins ■ 젠킨스(Jenkins)의 개념 : 젠킨스(Jenkins)는 거의 모든 언어의 조합과 소스코드 리포지토리(Repository)에 대한 지속적인 통합(CI) 과 지속적인 배포(CD) 를 무료로 제공합니다. ■ 젠키스 사용 장점 프로젝트의 표준 컴파일 환경에서 컴파일 오류 검출 코딩 규약 준수여부 체크 프로파일링을 통해 소스 변경에 따른 성능..

Infra/CI, CD 2022.12.13

함께 자라기 - 애자일로 가는 길 | 김창준

이 책은 백엔드 신입으로 취직하고 지금은 사라진, 전 사수님 께서 처음으로 추천해준 책이다. 그렇게 읽어볼 책 목록 (읽은 책 거의 없음) 에 기약없이 존재하다가, 한 2달전인가? 같이 공부했던 킹갓제너럴엠페리얼 지인께서 선물로 주어서 가지고있다가, 최근에 다 읽었다..!! (Shout out sendkite) 이책을 시작으로 책을 잘 읽어봐야지.. 함께 자라기를 읽고 기록해볼만한 내용과 소감 짧게 정리 레쓰고 1. 자라기 "자라기" == "학습" 이다. 일반적으로 불확실성이 높은 경우일수록 학습이 중요하다. 성인? 사회인은 야생학습을 할 줄 알아야한다. 야생학습은 학교학습에 비해서 아래와 같은 특징을 가진다 야생학습은 대부분 협력적이다 (학교학습은 대부분 개별적이다.) 야생학습은 대부분 비순차적이다. ..

[spring] WebFlux란 + Reactor 객체란 (Mono<> 와 Flux<>)

아래의 글 순서대로 읽으시면 해당 글을 이해하시는데 족흠 도움이 됩니다 🙏 (어쩌면 안될지도...^^) ⚙️ Block, Non-Block, sync(동기), Async(비동기) 의 간단한 개념 [Spring] Webclient 란❓ (RestTemplate vs WebClient) [Spring] WebClient 사용방법 가이드 (now) [spring] WebFlux란 + Reactor 객체란 (Mono 와 Flux) 이번 글에서는, Spring webflux 와 reative programing & reactor library 에 대한 개념 이해와 reactor 객체인 mono 와 flux를 다루는 방법의 이해를 목표로합니다 [목차] Spring WebFlux 개념 Spring WebFlux 생긴..

Spring/Spring Boot 2022.12.07

[Error] Jackson ObjectMapper : 멤버변수가 1개일 때

📌 문제 상황 1. Spring 에서 Patch 로 Json body 를 @RequestBody Dto Class 로 받아오는 부분을 리팩토링 2. 기존 Dto Class 는 단 1개의 멤버변수를 가지고, @Getter @Setter 가 적용되어 있었음 3. 기존의 지식 - @Setter 없이 생성자만 있으면 jakson 에서 매핑이 된다는 걸로 인지하여 @Getter @Setter ➡️ @Value 로 수정 💥붐 ~~ json mapping error 발생 error - code DefaultHandlerExceptionResolver - Resolved [org.springframework.http.converter.HttpMessageNotReadableException: JSON parse err..

Spring/Spring err 2022.11.28