보호되어 있는 글입니다.
정말 오랜만에 포스팅인데, 이번 포스팅에서는 Effective JAVA 와 같은 책에서 정말 많이 언급되는 Composition, Aggregation, Delegation 에 대해서 정리해보려고 한다. 이 세가지를 함께 정리하는 이유는 굉장히 비슷하면서도 다르면서도.. 그런 개념들이기 때문이다! 개념에 대해서 설명하기에 앞서 내가 프로젝트에서 Delegation 을 활용한 사례에 대해서 소개하려고 한다. 최근에 프로젝트에서 외부 업체로부터 SDK 를 제공받아 개발을 하게 되었는데, 해당 SDK 의 기능중에서 한 가지는 byte[] 타입의 인증서를 EckaCertificate 객체로 파싱해주고 이를 통해 인증서 정보를 읽어올 수 있도록 하는 것이었다. 하지만 해당 객체의 메소드중 하나인 eckaCerti..
보호되어 있는 글입니다.
이번 포스팅에서는 Proxy Pattern 에 대한 개념과 Spring Boot 에서 이러한 Proxy Pattern 을 사용한 예시에 대해서 살펴보려고 한다. Proxy 패턴이란? Proxy 패턴은 특정 객체가 호출되기 전에 그에 대한 접근을 제어하기 위해 사용되는 디자인 패턴이다. 즉 특정 객체가 호출될 때 해당 접근을 가로채 Proxy 객체가 그 역할을 대신하는 것을 의미한다. 제어권을 가져와 부가적인 기능을 수행한 후 기존 객체를 다시 Delegate 방식으로 호출할 수도 있다. 그림을 통해서 설명하면 기존에 클라이언트가 RealSubject.DoAction() 메소드를 호출하는 흐름을 Proxy 객체의 DoAction() 메소드로 가져와서 처리하고, 거기서 Delegate 하게 RealSubje..
성능테스트란? 쉽게 말하면 내가 만든 웹 서버(API)가 얼마나 많은 사용자들을 감당할 수 있는지 테스트하는 것을 말한다. 이외에도 두 가지 설계에 대해서 어떤 설계가 더 좋은 성능을 내는지 확인하기 위해서도 사용될 수 있다. 성능의 지표 성능을 판단하는 대표적인 지표로는 Throughput(처리량)과 Latency(지연시간)이 있다. Throughput 은 시간당 처리량을 의미하고 TPS(Transaction per seconds), RPS(Request per seconds) 와 같은 세부항목이 있다. 이러한 수치들은 해당 서비스가 1초당 어느정도의 작업을 처리할 수 있는지 나타내기 때문에 높은 수치일수록 성능이 좋다고 말할 수 있다. Latency 는 지연시간을 의미하고 이는 시스템이 클라이언트로부..
추상 클래스와 인터페이스의 공통점과 차이점에 대해서는 넘어가고 바로 본론으로 들어가도록 하자. 우선 JAVA 8 부터 인터페이스에서 Default Method 를 제공하기 때문에 추상 클래스와 같이 인스턴스 메서드를 구현한 형태로 제공할 수 있다. 기존에 "인터페이스에는 추상 메서드로만 구성되어야 한다" 에서 벗어나 완성된 메서드를 제공할 수 있다는 것이다. 둘의 가장 큰 차이는 추상 클래스가 정의한 타입을 구현하는 클래스는 반드시 추상 클래스의 하위 클래스가 되어야 한다는 점이다. 즉, 반드시 상속을 통해서만 추상 클래스 사용할 수 있다. 이 자체만으로 자바의 다중상속으로 인해 큰 제약이 생기게 된다. 이외에도 인터페이스는 믹스인 정의에 안성맞춤이고, 기존 클래스에도 손쉽게 구현할 수 있는 등 다양한 ..