전체 글
-
객체지향의 사실과 오해 (3)Book/객체지향의 사실과 오해 2022. 9. 25. 04:44
05. 책임과 메시지 의도는 "메시징"이다. 훌륭하고 성장 가능한 시스템을 만들기 위한 핵심은 모듈 내부의 속성과 행동이 어떤가보다는 모듈이 어떻게 커뮤니케이션하는가에 달려 있다. - 앨런 케이[Kay 1998] 객체지향 공동체를 구성하는 기본 단위는 '자율적'인 객체다. 객체들은 애플리케이션의 기능을 구현하기 위해 협력하고, 협력 과정에서 각자 맡은 바 책임을 다하기 위해 자율적으로 판단하고 행동한다. 자율적인 책임의 특징은 객체가 '어떻게(how)' 해야 하는가가 아니라 '무엇(what)'을 해야 하는가를 설명한다는 것이다. 객체지향 프로그래밍에서 행동은 수행할 책임을 지닌 객체에게 전송된 메시지에 의해 시작된다. 메시지는 행동에 대한 요청을 표현하고, 요청을 수행하는 데 필요한 추가적인 정보를 인자..
-
객체지향의 사실과 오해 (2)Book/객체지향의 사실과 오해 2022. 9. 21. 23:17
04. 역할, 책임, 협력 우리 모두를 합친 것보다 더 현명한 사람은 없다. - 켄 블랜차드(Ken Blanchard) 협력 협력은 다수의 요청과 응답으로 구성되며 전체적으로 협력은 다수의 연쇄적인 요청과 응답의 흐름으로 구성된다. 두 객체 간의 협력은 메시지를 통해 이뤄진다. 메시지를 전송함으로써 협력을 요청하는 객체를 송신자라고 하고 메시지를 받아 요청을 처리하는 객체를 수신자라고 한다. 책임 어떤 객체가 어떤 요청에 대해 대답해 줄 수 있거나, 적절한 행동을 할 의무가 있는 경우 해당 객체가 책임을 가진다고 말한다. 크레이그 라만(Craig Larman)은 "객체지향 개발에서 가장 중요한 능력은 책임을 능숙하게 소프트웨어 객체에 할당하는 것"이라고 말한다. 크레이그 라만은 객체의 책임을 크게 '하는..
-
객체지향의 사실과 오해 (1)Book/객체지향의 사실과 오해 2022. 9. 17. 09:05
Overview 해당 글은 객체지향의 사실과 오해 서적을 읽고 정리한 내용입니다. 01. 협력하는 객체들의 공동체 시너지를 생각하라. 전체는 부분의 합보다 크다. - 스티븐 코비(Stephen R. Covey) 객체지향의 본질 객체지향이란 시스템을 상호작용하는 자율적인 객체들의 공동체로 바라보고 객체를 이용해 시스템을 분할하는 방법이다. 자율적인 객체란 상태와 행위를 함께 지니며 스스로 자기 자신을 책임지는 객체를 의미한다. 객체는 시스템의 행위를 구현하기 위해 다른 객체와 협력한다. 각 객체는 협력 내에서 정해진 역할을 수행하며 역할은 관련된 책임의 집합이다. 객체는 다른 객체와 협력하기 위해 메시지를 전송하고, 메시지를 수신한 객체는 메시지를 처리하는 데 적합한 메서드를 자율적으로 선택한다. 훌륭한 ..
-
FeignClientBackEnd/MSA Communications 2022. 7. 23. 07:22
Overview 해당 글에서는 RestTemplate보다 사용이 간단하고 직관적인 FeignClient를 적용해 보겠습니다. FeignClient는 HTTP Client로 REST Call을 추상화 한 Spring Cloud Netflix 라이브러리입니다. FeignClient 적용 의존성 추가 implementation 'org.springframework.cloud:spring-cloud-starter-openfeign' @EnableFeignClients 적용 package com.example.userservice; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.Sprin..
-
RestTemplateBackEnd/MSA Communications 2022. 7. 20. 04:51
RestTemplate Spring 3.0부터 지원됩니다. HTTP 요청을 수행하는 Blocking I/O 기반의 동기 방식을 사용하는 클라이언트입니다. 간편하게 REST 방식의 API를 호출할 수 있는 Spring 내장 클래스입니다. Json, Xml, String과 같은 응답을 받을 수 있는 템플릿입니다. Spring 4.0에 비동기RestTemplate(AsyncRestTemplate) 추가되었으나 Spring 5.0에서 deprecated 되었습니다. Note. Spring 5.0부터 RestTemplate는 Maintenance 모드입니다. 동기(sync), 비동기(async) 및 스트리밍 시나리오(streaming scenarios)를 지원하는 org.springframework.web.rea..
-
Spring Cloud ConfigBackEnd/Spring Cloud 2022. 7. 2. 10:20
Spring Cloud Config 분산 시스템에서 서버, 클라이언트 구성에 필요한 설정 정보(application.yml)를 외부 시스템에서 관리 하나의 중앙화 된 저장소에서 구성요소 관리 가능 각 서비스를 다시 빌드하지 않고, 바로 적용 가능 애플리케이션 배포 파이프라인을 통해 DEV-STAGE-PROD 환경에 맞는 구성 정보 사용 yml 파일 생성 hello.yml 파일을 생성하고 git에 commit합니다. 생성 위치: /Users/hansekim/Desktop/Work/git-local-repo yml 파일 우선순위: application.yml > application-name.yml > application-name-.yml # hello.yml greeting: message: hello,..
-
Spring Cloud GatewayBackEnd/Spring Cloud 2022. 6. 22. 08:27
Spring Cloud Gateway Spring Cloud Gateway는 API Gateway의 하나로 MSA에서 사용되는 Proxy 서비스입니다. 단일 진입점에서 요청을 중앙 집중화하고 적절한 서비스로 라우팅합니다. Spring Cloud Ribbon(Client side Load Balancer)과 Spring Cloud Zuul(API Gateway)은 Spring boot 2.4에서 Maintenance 상태로 전환되었기에 Spring Cloud Gateway와 이전 글의 Eureka와 연동하는 방법에 대해 알아보겠습니다. API Gateway Service 특징 인증 및 권한 부여 서비스 검색 통합 응답 캐싱 정책, 회로 차단기 및 Qos 다시 시도 속도 제한 부하 분산 로깅, 추적, 상관 ..
-
Spring Cloud Netflix EurekaBackEnd/Spring Cloud 2022. 6. 18. 09:33
Spring Cloud Netflix Eureka Spring Cloud Netflix Eureka는 Service Discovery 입니다. Service Discovery란 MSA와 같은 분산 환경에서 활성중인 서비스 인스턴스들을 관리하는 것을 말합니다. Cloud 환경에서 Auto-scaling, 생성, 삭제, 확장 등을 통해 IP주소나 Port들이 동적으로 변경되어도 서비스 클라이언트가 서비스를 호출할 때 서비스의 위치를 알 필요가 없습니다. Eureka는 단지 서비스의 위치만을 표현하는 역할로 보통 Spring Cloud Gateway와 같은 클라이언트 사이드 로드밸런서와 함께 동작합니다. Spring Cloud Netflix Eureka 동작 순서 Eureka Server 기동 > Eureka..