본문 바로가기

전체 글

(47)
Spring, Spring Boot 차이 Spring, Spring Boot란 Spring은 엔터프라이즈급 Java 어플리케이션 개발을 위한 프레임워크이다. Spring은 의존성 주입(Dependency Injection), AOP(Aspect-Oriented Programming), MVC(Model-View-Controller) 패턴 등을 지원하여 복잡한 Java 애플리케이션을 더 쉽게 개발할 수 있게 만들어 준다. Spring Boot는 Spring을 기반으로 한 확장 프레임워크로 Spring에 비해 복잡한 설정 없이 빠르게 어플리케이션을 개발하는 것이 가능하다. Spring Boot는 내장 서버와 자동 설정 기능을 제공하여 개발 생산성이 높은 편이다. Spring을 기반으로 확장해서 나온 것이 Spring Boot 이므로 Spring B..
Web Socket Web Socket 이란 웹 소켓(Web Socket)은 서버와 클라이언트 간의 실시간 전이중 통신(full-duplex communication)을 가능하게 하는 프로토콜이다. 웹 소켓은 2011년 HTML5 표준의 일부로 포함되며 본격적으로 사용되기 시작했다. 이러한 웹 소켓은 웹 소켓을 지원하는 브라우저에서 사용 가능하다. 하지만 이를 지원하지 않는 구형 브라우저에서는 사용할 수 없다. (ex. Internet Explorer 9이하)  Web Socket의 특징  1. 양방향 통신 (Full-Duplex)데이터 송수신을 동시에 처리할 수 있는 통신 방법 클라이언트와 서버가 서로에게 원할 때 데이터를 주고받을 수 있다. (통상적인 Http 통신은 Client가 요청을 보내는 경우에만 Server가..
SOLID 원칙 SOLID 원칙이란 SOLID 원칙은 객체 지향 프로그래밍과 설계에서 코드의 유지보수성과 확장성을 높이기 위해 제안된 다섯 가지 설계 원칙을 의미한다. 각각의 원칙은 코드의 결합도를 낮추고 응집도를 높이며 코드의 가독성과 재사용성을 높이는 것을 목표로 한다.  1. 단일 책임 원칙 (Single Responsibility Principle, SRP)클래스(객체)는 단 하나의 책임만 가져야 한다는 원칙여기서 책임은 하나의 기능 담당으로 볼 수 있다.즉, 하나의 클래스는 하나의 기능 담당하여 하나의 책임을 수행하는데 집중되도록 클래스를 따로따로 여러 개 설계하라는 원칙 다른 의미로는 클래스가 변경되어야 하는 이유가 단 하나여야 한다는 것을 의미함 사용자의 데이터를 처리하는 로직이 필요하다고 가정하자.사용자 ..
WS(Web Server)와 WAS(Web Application Server) WS(Web Server) 란   웹 서버(Web Server)는 클라이언트(주로 웹 브라우저)로부터 HTTP 요청을 받아서 정적인 콘텐츠(HTML 파일, 이미지, CSS, JavaScript 파일 등)를 제공하는 서버 소프트웨어이다. 주로 정적인 웹 페이지를 제공하는 데 사용되며 대표적인 웹 서버로는 Apache HTTP Server, Nginx가 있다. 이러한 웹 서버의 특징은 다음과 같다.  HTTP 요청 처리클라이언트로부터의 HTTP 요청을 받아들이고 이에 대한 응답을 반환한다.정적 콘텐츠 제공정적인 파일(HTML, 이미지, CSS, JavaScript 등)을 클라이언트에게 제공한다.리버스 프록시요청을 다른 서버(ex. WAS)로 전달하여 처리 결과를 클라이언트에게 반환할 수 있다.로드 밸런싱여러..
추상 클래스와 인터페이스 추상 클래스란 추상 클래스는 하나 이상의 추상 메소드를 가지고 있는 클래스를 의미한다. 추상 클래스가 가지고 있는 특징은 다음과 같다. 추상 클래스를 선언할 때는 class 앞에 abstract 키워드를 사용한다. 어떠한 클래스가 추상 클래스를 상속하면 추상 클래스에 선언된 추상 메소드를 반드시 구현해야 한다. 추상 클래스는 new 키워드로 인스턴스를 생성할 수 없다. 상속할 때 extends 키워드를 사용하며 다중 상속이 불가능하다. 추상 클래스는 필드를 가질 수 있다. 이러한 필드는 상속받는 자식 클래스에서 사용할 수 있다.  추상 클래스 사용 예시 public abstract class Authenticator { private String authType; public Authentic..
인터페이스(Interface) 인터페이스란 자바에서 인터페이스(interface)란 클래스가 구현해야 하는 메소드의 집합을 정의하는 특수한 타입이다.  이러한 인터페이스를 사용하는 이유는 다음과 같다.추상 메소드를 통해 객체들 간의 네이밍을 통일할 수 있고 이로 인해 소스의 가독성과 유지보수가 향상된다. 확장에는 열려 있고 변경에는 닫혀 있는 객체 간 결합도(코드 종속성)를 낮춘 유연한 방식의 개발이 가능하다.  인터페이스는 클래스가 따라야 할 일종의 계약(규약)을 정의한다. 개발자는 인터페이스에 정의된 메소드를 구현한 클래스를 통해 실제 기능을 제공한다. 인터페이스는 메서드 이름, 매개변수 타입, 리턴 타입만 정의하고, 구현은 이를 구현하는 클래스에서 제공한다. 인터페이스를 구현한 클래스는 반드시 인터페이스에서 정의된 모든 메서드를..
상속(Inheritance) 상속이란  자바에서 상속(Inheritance)은 하나의 클래스가 다른 클래스의 속성과 메소드를 물려받아 재사용하는 방식을 의미한다. 상속 방식은 주로 다단계 상속, 계층적 상속 두 가지 방식을 띄게 되는데 부모 클래스를 통해 자식, 손자까지 내려가는 방식을 다단계 상속이라고 하며 하나의 부모가 여러 개의 자식을 가지는 것을 계층적 상속이라고 한다.  자바에서 다중 상속은 불가능 하다.  자바 클래스가 다중 상속이 불가능한 이유는 다음과 같다.1. A라는 class에 test()라는 메소드가 있음2. B라는 class에 test()라는 메소드가 있음3. C라는 class가 A와 B 클래스를 모두 상속받음4. C에서 부모 클래스의 test() 메소드 호출  - 이러면 어느 부모의 test() 메소드를 호출..
Forward Proxy, Reverse Proxy Proxy 서버 서버와 클라이언트 사이에 중계기로서 대리로 통신을 수행하는 것을 가리켜 Proxy, 그 중계 기능을 하는 것을 Proxy 서버라고 부른다. 프록시 서버는 클라이언트가 자신을 통해서 다른 네트워크 서비스에 간접적으로 접속할 수 있게 해 주는 컴퓨터 시스템이나 응용 프로그램을 가리킨다. Proxy 서버 중 일부는 Proxy 서버에 요청된 내용들을 캐시를 이용하여 저장해 둔다. 이러한 Proxy는 크게 Forward Proxy 와 Reverse Proxy 로 나뉜다.  Forward Proxy 클라이언트(사용자)가 인터넷에 직접 접근하는 대신, 포워드 프록시 서버가 클라이언트의 요청을 받아 인터넷에 연결하여 결과를 클라이언트에 전달한다. 이러한 포워드 프록시의 장점은 다음과 같다.   캐싱 프..