본문 바로가기

Back-end/벡엔드7

리액티브 프로그래밍 Spring WebFlux - 디버깅, 테스팅 디버깅  디버그 모드 Hooks.onOperatorDebug(); 비용이 많이 드는 동작 과정을 거치기 때문에 -> 처음부터 디버그 모드를 활성화하는 것은 권장하지 않음  checkpoint() 사용Flux .just(2, 4, 6, 8) .zipWith(Flux.just(1, 2, 3, 0), (x, y) -> x/y) .checkpoint("Example12_4.zipWith.checkpoint", true) .map(num -> num + 2) .checkpoint("Example12_4.map.checkpoint", true) .subscribe( data -> log.info("# onNext: {}", data), .. 2024. 8. 4.
리액티브 프로그래밍 Spring WebFlux를 이용한 Non Blocking 애플리케이션 구현 리액티브 시스템 리액티브 스트림즈 Blocking I/O 와 Non-Blocking I/O 함수 디스크립터 (Function Descriptor) ReactorHot Sequence & Cold Sequence Backpressure Scheduler Context리액티브 시스템과 리액티브 프로그래밍    리액티브 시스템  리액티브 시스템이란?리액티브라는 용어는 어떤 이벤트나 상황이 발생했을 때, 그에 따라 적절하게 행동하는 것을 의미합니다.그래서 리액티브 시스템은 반응을 잘하는 시스템, 클라이언트의 요청에 즉각적으로 응답함으로써 지연 시간을 최소화합니다.   리액티브 선언문MEANS: 비동기 메시지 기반의 통신 -> 느슨한 결합, 격리성, 위치 투명성 보장FORM: 리액티브 시스템이 비동기 메시지 통신.. 2024. 8. 3.
도메인 주도 개발 - 도메인서비스 도메인서비스  도메인 서비스 객체를 애그리거트에 주입하지 않기public class Order { @Authwired private DiscountService discountService; ..} Service 필드는 데이터 자체와는 관련이 없다. 저장 대상도 아니다.일부 기능만 필요로 하기 때문에 굳이 의존 주입을 할 이유는 없다. public class Order{ public void calculate(DiscountService discountService, .. ) { .... }} public class OrderService { private DiscountService discountService; private Order crea.. 2024. 5. 15.
도메인 주도 개발 - 이벤트 이벤트과거에 벌어진 어떤 것을 의미   시스템 간 강결합 문제public void 최소() { 주문취소 환불 (외부 환불 처리 서비스 이용)}외부 서비스의 성능에 영향을 받는 문제 도메인 객체에 서로 다른 도메인 로직이 섞이는 문제 강한 결합을 없앨 수 있는 방법은 이벤트를 사용하는 것특히 비동기 이벤트를 사용하면 두 시스템 간의 결합을 크게 낮출 수 있다.  이벤트 구성요소이벤트 생성 주체 -> 이벤트 퍼블리셔 -> 이벤트 핸들러 이벤트 용도1. 트리거: 도메인의 상태가 바뀔 때 다른 후처리가 필요하면 후처리를 실행하기 위한 트리거로 이벤트를 사용할 수 있다.2. 서로 다른 시스템 간의 데이터 동기화  이벤트 장점1. 서로 다른 도메인 로직이 섞이는 것을 방지2. 기능 확장에 용이  .. 2024. 5. 15.
내부망 프로젝트 - SAP HANA DB & Spring Boot DataBase 를 SAP HANA DB로 이관하면서 HANA DB 실습과 스프링 부트 연동을 했던 과정을 전체는 못담았지만 일부 기록을 남기려고 합니다. 1. HANA DB 실습 VMware 설치 VMware 다운로드 및 설치 방법(feat. VMware Workstation 무료 설치) HANA DB 관련 [무료 SAP HANA 설치하기] 01. 설치 파일 다운로드 및 vmware 준비 [무료 SAP HANA 설치하기] 03. HANA Studio 설치하기 HANA 멀티테넌트 DB - 3. 접속포트 이클립스 설치 하나 스튜디오를 사용하기 위해 이클립스를 활용합니다. HANA Studio Plug-in 설치 이클립스 실행 후 상단 메뉴 Help > Install New Software https://t.. 2024. 1. 10.
내부망 프로젝트 - Offline 에서 Spring Boot 개발 Maven 레포지토리 새로운 프로젝트에 투입하게 되었습니다. 그래서 요구사항 정의부터 시작하게 되어 23년 12월 말까지 진행하는 프로젝트 입니다. 이번 프로젝트는 보안이 중요한 국가(기관)에서 하는 프로젝트이기 때문에 내부망(폐쇄망)에서 접속가능한 웹포털을 개발하는 프로젝트입니다. 내부망 프로젝트는 처음이라 내부망 환경에서 어떻게 웹포털 프로젝트를 진행하게 되는지 기록하려고 합니다. 내부망 포털, 공유 디스크 등을 사용하려면 해당 담당자 분이 PC에 각종 보안 프로그램을 설치하여 외부망을 쓰지 못하도록 설정하게 됩니다. 그래서 내부망 PC로 전환전에 기존 다른 프로젝트를 실행시켜 메이븐/Gradle repository 파일들을 받아 오거나 프로젝트에 필요한 의존성 파일들을 최대한 받아옵니다. 뿐만 아니라 office, 한글.. 2023. 10. 15.
GitHub 깃허브 프로젝트 마일스톤 이슈 등록 GitHub 깃허브 프로젝트 마일스톤 이슈 등록 개인프로젝트 뿐만아니라 팀프로젝트를 할 때 깃허브를 활용하는 것이 필수입니다. 깃허브를 통해 다른 분들이 관리해 놓은 레포지토리를 보다보면 Projects 기능을 통해 프로젝트 진행을 관리하고 이슈를 통해 프로젝트 중 발생한 문제들을 해결해 나가는 것을 보았습니다. 그래서 앞으로 있을 협업 프로젝트를 위해 이슈 등록과 이슈를 해결해 나가는 연습을 해볼 것입니다. 기본적으로 깃허브 레포지토리가 있는 상태에서 시작합니다! 1. 프로젝트 생성 보드 형태의 프로젝트를 생성합니다. 2. 마일스톤 생성 (Opt) 프로젝트에서 마일스톤은 완성되기 까지의 중간 단계, 특정 지점, 이정표라고 생각하면 됩니다. 각 단계의 마일스톤을 언제까지 완성키겠다고 하는 상세일정을 정하.. 2022. 12. 31.