728x90
반응형

분류 전체보기 131

[Spring] Netty 개념

Netty 비동기 네트워크 프레임워크입니다. Channel에서 발생하는 이벤트들을 EventLoop가 처리하는 구조를 가집니다. Channel 기본 입출력 작업은 네트워크 전송에서 제공하는 기본형을 이용합니다. 자바 기반 네트워크 기본 구조는 Socket 클래스입니다. Netty의 Channel 인터페이스는 Socket으로 직접 작업할 때 복잡성을 완화하는 API를 제공합니다. EventLoop 이벤트를 실행하기 위한 무한루프 쓰레드입니다. Channel에서 발생한 이벤트는 이벤트 큐에 입력됩니다. 이벤트 큐에 입력된 이벤트가 있을 때 해당 이벤트를 꺼내서 이벤트를 실행합니다. 지원하는 스레드 종류에 따라 단일 스레드 이벤트 루프와 다중 스레드 이벤트 루프로 나뉩니다. 이벤트 루프가 처리한 이벤트의 결과..

Spring 2022.08.11

[Relational Databases] MHA 개념

MHA Master High Availability의 약자로 Master DB의 고가용성을 위해 페이스북에 의해 개발되었으며 GPL v2 라이센스 기반의 오픈소스 입니다. Master / Slave 구조의 Replication 환경에서 Master DB에 장애가 발생했을 때 사람이 직접 Master DB를 변경하면 서비스 중단 시간이 길어지므로 이를 자동화 할 수 있는 기능을 만든 것입니다. MHA에 의해서 자동 Fail-Over(Master 승격)을 지원하고 Slave 중 가장 최신의 Slave DB를 Master DB로 승격시켜 고가용성을 유지 시키는 역할을 하게 됩니다. MHA의 기능 Master DB의 네트워크 단절(통신불가 or 3306 포트 접속 불가) 시 Fail-Over을 진행합니다. Fa..

[Relational Databases] Database Replication 개념

DB Replication 초기 서버를 구성할 때는 하나의 서버와 하나의 데이터베이스를 구성하지만, 사용자 많아지고, 데이터베이스에 많은 Query가 발생하게 되면 이 트래픽을 처리하기 힘든 상황까지 오게됩니다. Query의 대부분을 차지하는 Select를 어느 정도 해결하기 위해 Replication 이라는 방법이 나오게 되었습니다. Replication은 두 개 이상의 DBMS 시스템을 Master / Slave로 나눠서 동일한 데이터를 저장하는 방식입니다. Master DBMS에는 데이터의 수정사항을 반영하고, Rplication 하여 Slave DBMS에 실제 데이터를 복사합니다. 즉, Replication은 실시간 복제본 데이터베이스 서버를 운용하는 것을 의미합니다. 기준이 되는 서버는 마스터 ..

[OS] Memory Management (1) - 메모리 관리 개념

Memory Management (메모리 관리) 프로그램은 프로세스가 되어 프로세서에 적재되기 위해 메모리에 적재되어야 합니다. 따라서 메모리는 중요한 작업 공간이고, 한정된 메모리를 다중 프로그래밍 환경에서 이용하기 위해서 여러 프로세스가 함께 메모리를 사용하면서 효율적으로 관리해야 합니다. 메모리를 효율적으로 관리하기 위해 메모리 관리자, 메모리 관리 장치(MMU), OS 관리 모듈이 있습니다. 메모리 관리 정책 적재 정책(Fetch Policy) 디스크에서 메모리로 프로세스를 언제 가져와야 할지 정합니다. 배치 정책(Placement Policy) 디스크에서 메모리로 가져온 프로세스를 어느 위치에 저장할 것인지 정합니다. 대치 정책(Replacement Policy) 메모리가 충분하지 않을 때 현재..

Backend/OS 2022.08.09

[Spring] 관습적인 추상화

문제 인식 대부분 프로젝트를 할 때 Service를 인터페이스로 만들고 ServiceImpl을 구현체 클래스로 만들게 됩니다. 이렇게 인터페이스와 클래스로 분리하는 이유는 구현체를 독립적으로 확장할 수 있으며, 구현체 클래스를 변경하거나 확장해도 클라이언트의 코드에 영향을 주지 않기 때문입니다. 또한 위와 같은 추상화 방식을 사용하여 구현하므로써 객체지향의 다섯가지 원칙 중 하나인 OCP원칙을 잘 지키는 설계 방식이라고 할 수 있습니다. [Spring] 객체 지향 설계의 다섯 가지 기본 원칙 - SOLID SOLID 다섯 가지 설계 원칙 단일 책임 원칙(SRP: Single Responsibility Principle) 한 클래스는 하나의 책임만 가져야 한다. 책임 영역이 확실해지고, 한 클래스의 변경이..

Spring 2022.08.09

[Java] Facade Pattern

Facade Pattern Facade는 건물의 안쪽 정면이라는 뜻으로, 여러 개의 객체와 실제 사용하는 서브 객체 사이에 복잡한 의존관계가 있을 때, 중간에 Facade라는 객체를 두고, 여기서 제공하는 interface만을 활용하여 기능을 사용하는 방식입니다. Facade Pattern 적용 전 [Ftp class] package Java.facadePattern; public class Ftp { private String host; private int port; private String path; public Ftp(String host, int port, String path) { this.host = host; this.port = port; this.path = path; } public..

JAVA 2022.08.01

[Java] Observer Pattern

Observer Pattern 감시자로써 역할을 합니다. 객체를 감시하다가 이벤트나, 변화가 일어 났을 때, 미리 등록된 다른 클래스에 통보해주는 패턴을 구현한 것입니다. 이 패턴은 Event Listener에서 많이 사용하고 있습니다. Observer Pattern 구현 [ButtonListener interface] package Java.observerPattern; public interface ButtonListener { void clickEvent(String event); } ButtonListener를 만들어서 clickEvent가 생길 때 event를 어떻게 처리할지에 대한 메서드를 정의하였고, Main 메서드에서 clickEvent를 구현할 것입니다. [Button class] pac..

JAVA 2022.08.01

[Java] Decorator Pattern - Example Car

Decorator Pattern 의 다른 예제 기존의 포스팅했던 Decorator Pattern입니다. 개념이나 다른 예제를 원하시는 분은 참고하시면 좋을 것 같습니다. [Java] Decorator Pattern Decorator Pattern 기존 클래스는 유지하되, 이후 필요한 형태로 꾸밀 때 사용합니다. 객체의 결합을 통해 기능을 동적으로 유연하게 확장할 수 있습니다. OCP와 DIP를 따릅니다. Decorator Pattern Ex 커피 lakelight.tistory.com Decorator Pattern Car Example [Car interface] package Java.decoratorEx; public interface Car { int getPrice(); void showPric..

JAVA 2022.08.01

[Java] Proxy Pattern - AOP

AOP (Aspect Oriented Programming) 관점 지향 프로그래밍 즉, 어떤 로직을 기준으로 핵심적인 관점, 부가적인 관점으로 나누어서 보고 그 관점을 기준으로 각각 모듈화 하겠다는 의미 입니다. Proxy Pattern을 활용한 AOP 구현 [Browser interface] package Java.proxy; public interface Browser { HTML show() throws InterruptedException; } [HTML class] package Java.proxy; public class HTML { private String url; public HTML(String url) { this.url = url; } } [AopBrowser class] packa..

JAVA 2022.07.31

[Java] Proxy Pattern

Proxy Pattern 대리인 이라는 뜻으로, 대신해서 처리하는 것을 말합니다. Proxy Class를 통해서 대신 전달하는 형태로 설계되며, 실제 Client는 Proxy로 부터 결과를 받습니다. 또한 Cache의 기능으로도 활용이 가능합니다. OCP와 DIP를 따릅니다. Proxy Pattern 으로 캐싱 구현 [Browser interface] package Java.proxy; public interface Browser { HTML show(); } [Chrome class] package Java.proxy; public class Chrome implements Browser{ private String url; public Chrome(String url) { this.url = url;..

JAVA 2022.07.31
728x90
반응형