전체 글

백엔드/Spring

[Spring Cloud] Spring Cloud OpenFeign

Spring Cloud OpenFeign이란? Spring Cloud OpenFeign은 선언적 웹서비스 클라이언트이다. RestTemplate과 같이 마이크로서비스 간의 통신에 사용하는 라이브러리이다. Spring Cloud는 Feign에 Spring MVC 애노테이션과 HttpMessageConverter를 지원하고, Eureka, Spring Cloud CircuitBreaker 및 Spring Cloud LoadBalancer를 통합하여 Load-Balanced HTTP 클라이언트를 지원한다. 기존의 RestTemplate은 반복적인 코드가 많고 유지 보수적으로 오래 유지하기 힘든 단점이 있었다. RestTemplate은 다음과 같은 작업들을 반복적으로 수행해야 한다. RestTemplate 인스..

백엔드/etc

[우아한 테크 세미나] 제어할 수 없는 것에 의존하지 않기

이 글은 우아한 테크 세미나 [테크 리더 3인이 말하는 "개발자 원칙"]의 인프랩 테크리더 이동욱 님의 세미나를 듣고 작성한 글입니다. 일정은 지키지만 버그가 많은 것 vs 일정은 못 지키지만 버그가 없는 것 보통은 이 고민에 대해서 정답을 내리지 못하는 경우가 많다. 프로그래머에게 요구되는 것은 100점이 아닌 80~90점짜리 프로그램을 기한 내에 완성하는 일이다. - 나카지마 사토시 프로덕트의 엔지니어의 일은 고객이 원하는 기능을 고객이 원하는 시점에 전달하는 것이다. 그럼 일정이 퀄리티 보다 중요하다는 걸까? 그건 아니다. 결국 프로덕트 엔지니어가 쌓아야할 역량 중에 가장 중요한 것은 아무리 급해도 항상 80~90점짜리 소프트웨어를 일정 내 개발할 수 있는 방법이다. 일정을 항상 잘 지키는 분들의 ..

백엔드/etc

AMQP(Advanced Message Queing Protocol)

AMQP란? AMQP(Advanced Message Queing Protocol)는 메시지 지향 미들웨어를 위한 개방형 표준 응용 계층 프로토콜이다. 흔히 알고 있는 MQ의 오픈소스에 기반한 표준 프로토콜을 의미한다. 등장 배경 이전에도 상용화된 MQ 제품들은 많았지만, 한 가지 문제가 있다면 대부분 플랫폼 종속적인 제품들이었기 때문에 서로 다른 이기종간에 메시지를 교환하기 위해서는 메시지 포맷 컨버전을 위한 메시지 브리지를 이용하거나 (속도 저하 발생) 시스템 자체를 통일시켜야 하는 불편함과 비효율성이 있었다. 이러한 기존의 MQ들의 약점을 보완하기 위해 등장한것이 AMQP이다. 즉, AMQP의 목적은 서로 다른 시스템간에 최대한 효율적인 방법으로 메시지를 교환하기 위한 MQ 프로토콜인 것이다. 벤더에..

백엔드/Java

[Java] 상속(Inheritance)과 합성(Composition)

상속과 합성의 개념 상속(Inheritance) 부모 클래스와 자식 클래스 사이의 의존성은 컴파일 타임에 해결 is-a 관계 부모클래스의 구현에 의존 결합도가 높음. 클래스 사이의 정적인 관계 부모 클래스 안에 구현된 코드 자체를 물려받아 재사용 합성(Composition) 두 객체 사이의 의존성은 런타임에 해결 has-a 관계 구현에 의존하지 않음. 내부에 포함되는 객체의 구현이 아닌 인터페이스에 의존. 객체 사이의 동적인 관계 포함되는 객체의 퍼블릭 인터페이스를 재사용 상속(Inheritance)이란 클래스 상속을 통해 자식 클래스는 부모 클래스의 자원을 물려받게 되며, 부모 클래스와 다른 부분만 추가하거나 재정의함으로써 기존 코드를 쉽게 확장할 수 있다. 그래서 상속 관계를 is-a 관계라고 표현하..

백엔드/Spring

[Spring] Spring Boot Actuator

Spring Boot Actuator란? 시스템을 운영하다 보면 시스템이 사용하고 있는 Thread, Memory, Session 등의 요소에 대해서 모니터링은 필수적인 요소다. 운영되는 시스템은 아무리 잘 만들어졌다고 할지라도 버그가 있을 수 있다. 우리는 이런 상황을 대비하기 위해서 모니터링을 해야 한다. Spring Boot에서는 Spring Boot Actuator라는 자체모니터링 툴을 제공한다. Spring Boot 공식 Reference에 나와있는 Actuator에 대한 간략한 설명이다. Spring Boot includes a number of additional features to help you monitor and manage your application when you push i..

백엔드/Java

[Java] 옵저버 패턴(Observer Pattern)

Observer Pattern이란? 옵저버 패턴(Observer Pattern)은 옵저버(관찰자)들이 관찰하고 있는 대상자의 상태가 변화가 있을 때마다 대상자는 직접 목록의 각 관찰자들에게 통지하고, 관찰자들은 알림을 받아 조치를 취하는 행동 패턴이다. 옵저버 패턴은 여타 다른 디자인 패턴들과 다르게 일대다(one-to-many) 의존성을 가지는데, 주로 분산 이벤트 핸들링 시스템을 구현하는 데 사용된다. Pub/Sub(발행/구독) 모델로도 알려져 있기도 하다. 이 패턴을 이해하는 데 있어 유튜브로 비유해 보면 쉽다. 유튜브 채널은 발행자(Subject)가 되고 구독자들은 관찰자(Observer)가 되는 구조로 보면 된다. 유튜버가 영상을 올리면 구독자들은 영상이 올라왔다는 변화를 감지하여 알림이 오게 ..

백엔드/Java

[Java] 전략 패턴(Strategy Pattern)

전략 패턴(Strategy Pattern) 전략 패턴은 실행(런타임) 중에 알고리즘 전략을 선택하여 객체 동작을 실시간으로 바뀌도록 할 수 있게 하는 행위 디자인 패턴이다. 여기서 '전략'이란 일종의 알고리즘이 될 수도 있으며, 기능이나 동작이 될 수도 있는 특정한 목표를 수행하기 위한 행동 계획을 말한다. 즉, 어떤 일을 수행하는 알고리즘이 여러 가지 일 때, 동작들을 미리 전략으로 정의함으로써 손쉽게 전략을 교체할 수 있는, 알고리즘 변형이 빈번하게 필요한 경우에 적합한 패턴이다. 전략 패턴 구조 전략 알고리즘 객체들 : 알고리즘, 행위, 동작을 객체로 정의한 구현체 전략 인터페이스 : 모든 전략 구현체에 대한 공용 인터페이스 컨텍스트(Context) : 알고리즘을 실행해야 할 때마다 해당 알고리즘과..

백엔드/Java

[Java] 템플릿 메서드 패턴(Template Method Pattern)

템플릿 메서드 패턴(Template Method Pattern) 템플릿 메서드(Template Method) 패턴은 여러 클래스에서 공통으로 사용하는 메서드를 템플릿화 하여 상위 클래스에서 정의하고, 하위 클래스마다 세부 동작 사항을 다르게 구현하는 패턴이다. 즉, 변하지 않는 기능(템플릿)은 상위 클래스에 만들어두고 자주 변경되며 확장할 기능은 하위 클래스에서 만들도록 하여, 상위의 메소드 실행 동작 순서는 고정하면서 세부 실행 내용은 다양화될 수 있는 경우에 사용된다. GoF 디자인 패턴에서는 템플릿 메서드 패턴을 다음과 같이 정의했다. 템플릿 메서드 디자인 패턴의 목적은 다음과 같습니다. 작업에서 알고리즘의 골격을 정의하고 일부 단계를 하위 클래스로 연기합니다. 템플릿 메서드를 사용하면 하위 클래스..

밝은별 개발자
'분류 전체보기' 카테고리의 글 목록 (3 Page)