AOP는 무엇인가? AOP (Aspect-Oriented Programming) --AOP는관점 지향 프로그래밍으로비즈니스 로직과 상관없는 공통 기능을 분리하여재사용성과 유지보수성을 높이는 프로그래밍 기법이다. 이는 OOP(객체 지향 프로그래밍)에서 해결하기 어려운 공통 기능의 중복 문제를 해결하는 데 유용하다. 공통 기능이란"횡단 관심사 (Cross-cutting Concerns)"를 말하고여러 모듈이나 클래스에서 공통으로 필요하지만 해당 모듈 자체의 핵심 기능과는 직접적으로 관련이 없는 기능을 의미한다.(ex. 로깅) 예시 상황m1(), m2(), ... 라는 자판기 관련 메서드가 존재 (m1 = 커피 자판기 메서드, m2 = 음료 자판기 메서드, m3 = ...)m1(), m2(), ...
Terminology

STOMP이란 무엇인가? STOMP (Simple/Streaming Text Oriented Messaging Protocol) --STOMP은웹소켓(WebSocket) 또는 TCP처럼 "양방향" 네트워크 프로토콜 위에서 동작하는텍스트 기반의 메시징 서브 프로토콜로,"메시지 브로커"라는 것을 활용하여 보다 쉽게 메시지를 송수신할 수 있는 프로토콜이다.(즉, STOMP은 메시지 브로커와 통신하기 위해 설계된 프로토콜이다.)그리고 "pub/sub(발행/구독)" 구조로 동작한다. 서브 프로토콜은상위 프로토콜 위에서 동작하는 프로토콜로,특정 기능을 확장하거나 보완하는 역할을 해준다. WebSocket과 STOMP의 차이점WebSocketTCP 기반의 양방향 통신 프로토콜로,클라이언트와 서버 간에 지속..

웹소켓은 무엇인가? HTTP 통신 --기본적으로 HTTP 통신은클라이언트가 서버에게 요청을 보내고,서버는 해당 요청에 대한 응답을 다시 보내는 "단방향 통신"으로 소통한다. 일반적인 기능들은 위와 같은 "단방향" 통신으로 구현이 가능하지만만약 실시간 채팅, 멀티 게임 등 실시간으로 통신을 해야 하는 경우에 한계가 존재한다. A와 B가 서로 채팅을 하고 있다고 가정하자.A가 메시지를 작성하여 전송하기 요청서버는 해당 요청에 대한 응답을 전달 (전송한 메시지 내용이 화면에 보이게)B는 서버로부터 최신값을 받지 못해서 A가 메시지를 전송했는지 확인 불가위 상황처럼A는 요청과 함께 서버로부터 최신 정보들을 받아와 화면이 변화한 것을 볼 수 있지만B는 서버에 요청을 하지 않아 서버로부터 최신 정보를 받..

CORS는 무엇일까? Origin --SOP (Same Origin Policy)CORS (Cross Origin Resource Sharing)SOP와 CORS를 보면 둘 다 "Origin"이라는 단어가 포함되어 있다. Origin이란 "출처"를 의미하고URL에서 Protocol + Host + Port를 합친 주소를 Origin이라고 부른다.즉, URL부분에서 출처를 판단할 때에는 Origin을 확인한다. 그래서 SOP와 CORS는 이 Origin(출처)와 관련 있는 용어라는 것을 알 수 있다.-- SOP (Same Origin Policy, 동일 출처 정책) --SOP는브라우저의 정책 중 하나로웹 보안을 위해 클라이언트(브라우저)가악의적인 사이트로부터 데이터를 탈취하거나 조작하는 것..

팩토리 메서드 패턴은 무엇인가? 팩토리 메서드 패턴 (Factory Method) --팩토리 메서드 패턴은상속 관계에 있는 두 클래스에서부모 클래스에는 중요한 뼈대를 정의하고, 자식 클래스에는 객체 생성에 관한 구체적인 내용을 정의하는 패턴으로부모 클래스에서는 객체 생성 방식에 대해 전혀 알 필요 없이 자식 클래스에게 객체 생성을 맡겨서구체적인 클래스 타입을 알 필요 없이 객체를 생성할 수 있게 된다.이를 통해 유연성과 유지 보수성이 증가한다. 예시 코드// (부모 클래스) 추상 클래스 또는 인터페이스를 사용한다.abstract class Car { protected String name; public String getName() { return name; ..

싱글톤 패턴은 무엇인가? 싱글톤 패턴 (Singleton) --싱글톤 패턴은하나의 클래스는 오직 하나의 객체(인스턴스)만 생성하고, 해당 객체에는 누구나(전역적) 접근이 가능하도록 보장한다.원래는 하나의 클래스로 여러 객체를 생성할 수 있지만, 그렇게 하지 않고 단 하나의 객체만 생성하고,해당 객체를 기반으로 로직을 구성하기 위해 사용하는 패턴이다. 주로 자원 관리가 필요한 경우(DB 연결, 설정 관리 등)에해당 데이터를 관리하는 객체 하나만 생성하여 여러 곳에서 공유하여 사용할 때 유용하다. 간단하게 생각하면여러 곳에서 공통으로 사용할 데이터를 관리하는 객체를 하나 만드는 것이다. 장단점객체를 생성하는 비용이 줄어든다.의존성이 높아진다.주로 단위 테스트를 하는 TDD 할 때 걸림돌이 된다.(단..
디자인 패턴은 무엇이며 어떤 것들이 있을까? 디자인 패턴 (Design Pattern) --디자인 패턴은소프트웨어 설계에서 자주 발생하는 문제들을 해결하기 위한 일종의 "표준화된 해결 방법"이다.(프로그램을 설계할 때 발생했던 문제점들을 특정 방법을 통해 해결할 수 있도록 하나의 "규약", "템플릿" 형태) 특징주로 객체지향 프로그래밍에서 사용한다.코드를 더욱 유지보수하기 쉽고, 확장 가능하게 만든다.주로 객체 생성, 구조 설계, 객체 간 상호작용 등을 효과적으로 처리하는 방법이 있다.다른 개발자들과 더욱 쉽게 소통이 가능해지며, 시스템을 이해하는 데 도움을 준다.즉, 프로그램 구조를 체계적이고 재사용 가능하게 만들며, 개발자들과 소통하기 편리해진다. 디자인 패턴을 사용하면 왜 소통이 편리해지..

DI는 무엇이고 어떻게 구현하는 것일까? 의존성 (의존 관계, Dependency) --의존성은객체 지향 프로그래밍에서한 객체가 다른 객체에 대해 얼마나 의존적인지를 나타내는 개념이다. class A { int a = 10; public void test() { System.out.println(a); }}class B { A aaa = new A(); aaa.test();} 위 코드를 보면B 클래스 내부에서 A 클래스의 객체를 직접 생성하여 사용하는 구조로B 클래스는 A 클래스에 의존하고 있는 형태가 된다.A 클래스의 내용이 변하면 B 클래스도 이에 따라 변하게 되는 것이다. 즉, 의존 관계라는 것은B가 A를 의존하고 있을 때, A가 변하면 B에도..