Justin의 개발 로그
ThreadPool로 초당 API 호출 건수 제한 - ExecutorService

https://github.com/Justin-ad-Park/fastcampus-mysql/tree/init/project GitHub - Justin-ad-Park/fastcampus-mysql Contribute to Justin-ad-Park/fastcampus-mysql development by creating an account on GitHub. github.com [샘플 구동용 Gradle 설정] plugins { id 'org.springframework.boot' version '2.7.2' id 'io.spring.dependency-management' version '1.0.12.RELEASE' id 'java' } group = 'com.example' version = '0.0..

article thumbnail
Flowable.crete 구조 파악

메인 코드 public class L11_FlowableSample2Simple { @Test void flowableTest() throws InterruptedException { // 1. 람다 메소드 방식 */ Flowable flowable = Flowable.create(stringFlowable, BackpressureStrategy.BUFFER); // 2. 인스턴스 생성 방식 */ // Flowable flowable = Flowable.create(new StringFlowable(), BackpressureStrategy.BUFFER); flowable.observeOn(Schedulers.computation()) .subscribe(new StringSubscriber()); Th..

article thumbnail
스태프 엔지니어(Staff Engineer)란 무엇인가?
프로그래밍 2023. 6. 23. 11:37

스태프 엔지니어(Staff Engineer)란 무엇인가? 시니어 엔지니어는 "최종 직급"이 아니며, 관련 역량이나 스킬을 더 이상 개발하지 않아도 되는 직급이 아니다. 시니어 단계에 이르더라도 꾸준히 자기 계발을 지속하면 "기술 전문 리더십" 수준에 도달할 수 있다. "기술 전문 리더십" 단계에 도달한 사람을 주로 "스태프 엔지니어"라고 부른다. 매니저의 역할이 관리 중심의 리더십 역량이 중요하다면, "스태프 엔지니어"는 기술 중심의 리더십 역량이 중요하다. 스태프 엔지니어 매니저 시니어 엔지니어 요약 기술 전문 리더십 매니저 도메인 전문 리더십 핵심 관리 항목 기술 관리 *넓은 커버리지의 S/W 구조 설계 *특정 분야의 전문가 수준의 지식 사람, 프로젝트 관리 *관리 능력(프로젝트, 위기, 사람 ....

article thumbnail
MSA의 성공 기준
프로그래밍/MSA 2023. 5. 19. 11:26

https://waspro.tistory.com/718 RESTFul API가 적용된 프로젝트 독립적인 배포가 가능하도록 결합도를 낮춘 프로젝트 클라우드가 적용된 확장성, 가용성이 확보된 프로젝트 자동화된 배포 체계가 갖추어진 프로젝트 DevOps 조직 체계를 적용한 프로젝트 "마이크로서비스 아키텍처는 그간 IT를 이끌어온 아키텍처 사상들의 Pain Point들을 수집하고 이를 어떻게 해소해 낼 것인가에 집중한 아키텍처 사상이며, 고객의 니즈를 신속하게 적용하기 위해 여러 기술셋들을 선택적으로 적용한 아키텍처이다. 성공적으로 전환한 프로젝트는 바로 이를 달성한 프로젝트라 할 수 있다." 여기서 주목해야 하는 점은 기술 적용이 아니라... Pain Point를 해소하기 위한 기술셋들을 선택적으로 적용한이다..

article thumbnail
SAGA 보상 트랜잭션
프로그래밍/MSA 2023. 5. 19. 10:49

펌 : https://waspro.tistory.com/603 SAGA 패턴 & 보상트랜잭션 SAGA 패턴은 서비스 별 각 트랜잭션이 단일 서비스 내의 데이터를 갱신하는 일련의 로컬 트랜잭션을 의미한다. 첫번째 서비스의 트랜잭션이 완료되면 두번째 서비스의 트랜잭션이 동작하도록 트 waspro.tistory.com SAGA 패턴은 서비스 별 각 트랜잭션이 단일 서비스 내의 데이터를 갱신하는 일련의 로컬 트랜잭션을 의미한다. 첫번째 서비스의 트랜잭션이 완료되면 두번째 서비스의 트랜잭션이 동작하도록 트리거 되는 방식이라 생각할 수 있다. SAGA 패턴은 크게 두가지 방식으로 구현할 수 있다. Event / Chreography : 각 로컬 트랜잭션이 이벤트를 발생시키고, 다른 서비스가 트리거 하는 방식 Com..

보호되어 있는 글입니다. 내용을 보시려면 비밀번호를 입력해주세요.
article thumbnail
RxJava Single 구조 파해치기

Single을 활용한 간단한 샘플 소스를 가지고, Single이 어떻게 동작하는지 구조를 파해쳐 보도록 하겠다. 단계가 복잡하게 얽혀 전체를 파악하기 쉽지 않지만, 찬찬히 따라가다 보면 적어도 이렇게 구현되어 있구나라는 점은 파악할 수 있으리라. import io.reactivex.rxjava3.annotations.NonNull; import io.reactivex.rxjava3.core.Single; import io.reactivex.rxjava3.core.SingleObserver; import io.reactivex.rxjava3.core.SingleOnSubscribe; import io.reactivex.rxjava3.disposables.Disposable; import org.jetbr..

article thumbnail
IntelliJ Selenium 프로젝트 구성
프로그래밍/Java-Spring 2023. 4. 10. 16:40

Chrome IDE 설치 https://chrome.google.com/webstore/detail/selenium-ide/mooikfkahbdckldjjndioackbalphokd Selenium IDE Selenium Record and Playback tool for ease of getting acquainted with Selenium WebDriver. chrome.google.com 셀레늄 웹 드라이버 설치 https://www.selenium.dev/downloads/ https://chromedriver.chromium.org/ 각자 PC에 설치된 크롬(또는 선호하는 브라우저) 버전을 확인해서 버전에 맞는 driver를 설치해야 한다. PATH Environment Variable 에 추..

자바 DSL - 중첩된 함수(NestedFunction) + Lambda

DSL이 파라미터의 위치에 따라 역할이 정해지는 중첩된 함수(Nested Function) 패턴으로 구현된 DSL의 단점은 Lambda(함수형인터페이스)를 활용해 개선할 수 있다. NestedFunction + Lambda를 활용한 파라미터 역할 지정 기본형 파라미터로 입력받던 quantity와 price를 대체하기 위한 Supplier를 정의 public class SimpleSupplier implements Supplier { final T value; protected SimpleSupplier(final T value) { this.value = value; } private SimpleSupplier() { value = null; } @Override public T get() { retur..

자바 DSL - 중첩된 함수(NestedFunction) 패턴

public class NestedFunctionOrderBuilderEx { public static Order order(String customer, Trade... trades) { Order order = new Order(); order.setCustomer(customer); Stream.of(trades).forEach(order::addTrade); //주문에 모든 거래 추가 return order; } public static Trade buy(int quantity, Stock stock, double price) { return buildTrade(quantity, stock, price, Trade.Type.BUY); } public static Trade sell(int quan..