목록2024/08 (5)
장미정원

MSAMicroService Architecture, 마이크로서비스 아키텍처는 작고, 독립적인 각각의 서비스들이 모여 하나의 애플리케이션을 이루는 아키텍처를 의미합니다. 마이크로서비스 아키텍처는 모놀리식 아키텍처와 대비되는데요, 기존에 개발하던 애플리케이션 아키텍처 방식이 모놀리식이라고 볼 수 있습니다. 모놀리식 아키텍터와 MSA모놀리식 아키텍처전통적인 시스템 구조인 모놀리식 아키텍처 구조는 하나의 애플리케이션에 모든 비즈니스 서비스를 개발하는 방식입니다. 모놀리식 아키텍처 애플리케이션은 하나의 단일체로서 아무리 작은 변화가 발생해도 애플리케이션 전체를 빌드하고 배포해야합니다. 모놀리식 아키텍처는 소규모 프로젝트나 일반적인 프로젝트에서는 합리적인 선택입니다. 하지만 모놀리식 아키텍처는 대규모 서비스, ..

인덱스인덱스는 데이터베이스 튜플의 검색 속도 향상을 위한 자료구조입니다.인덱스는 우리 생활에서도 정말 많은 부분에서 사용됩니다. 만약 책의 원하는 부분을 찾기 위해 책의 첫 페이지부터 모든 페이지를 한 장씩 찾는다면 굉장히 오랜 시간이 소요됩니다. 하지만 책의 맨 앞에 있는 목차(인덱스)를 확인하면 원하는 부분을 쉽고 빠르게 찾을 수 있습니다. 인덱스를 사용하지 않는 컬럼으로 조회를 진행한다면 테이블 전체를 Full Scan 해야 하기 때문에 굉장히 오랜 시간이 소요됩니다. 하지만 인덱스를 사용하는 컬럼으로 조회를 한다면 테이블 전체를 Full Scan 하지 않고 인덱스라는 자료구조를 통해 조건에 맞는 데이터를 찾게 됩니다. 그 후 조건에 맞는 데이터를 찾았다면 해당 데이터의 주소값으로 바로 해당 튜플..

AOPAOP(Aspect Oriented Programming), 관점지향프로그래밍은 핵심기능과 부과기능을 구분하여 반복적으로 사용되는 기능을 모듈화하여 공통 관심사로 분리하여 프로그래밍하는 것입니다. AOP를 구현하면 공통 기능이 추가되었을 대 핵심기능에 코드를 수정하지 않으면서 공통기능에 대한 구현을 추가하는 것입니다. 위와 같이 주문 관련 기능이 있다고 가정해보겠습니다. 여기서 각각의 핵심 기능인 주문받기, 주문정보조회 전, 후에 로그를 남겨야 한다면 각각의 핵심 기능 코드에 직접 로그를 출력하는 코드를 작성해야합니다. 이렇게 된다면 중복되는 코드가 많아지고 직접 핵심 기능의 코드를 수정해야하기 때문에 유지보수가 힘들어집니다. 여기서 AOP의 개념을 적용시킨다면, 핵심기능과 부과기능의 관점을 분..

프로세스프로세스는 실행 중인 프로그램을 의미합니다. 컴퓨터에 있는 여러 프로그램들은 보조기억장치에 저장되어 있다가 프로그램을 실행하는 순간 메모리에 적재되고 프로그램은 프로세스가 됩니다. 프로세스는 실행될때 CPU의 자원을 필요로 합니다. 컴퓨터에는 여러 개의 프로세스들이 실행될 수 있습니다. 하지만 모든 프로세스가 CPU의 자원을 동시에 사용할 수는 없으므로 각자 차례를 기다리며 한정된 시간만큼만 CPU 자원을 사용하고 돌려주는 것을 반복하여 동작합니다. 이러한 프로세스의 실행 순서를 관리하고 프로세스에 지원을 배분하는 일은 운영체제가 담당하는데 이를 위한 운영체제는 PCB를 이용합니다. PCB - Process Control Block프로세스 제어 블록은 프로세스의 정보를 저장하는 자료구조입니다. 메..

GC란?GC(Garbage Collector)는 주기적으로 힙 메모리의 사용하지 않는 객체를 검사하여 청소해줍니다. C, C++과 같은 언어들은 Unmanaged Language로 생성한 객체에 대한 메모리 헤제를 직접 해야합니다. 하지만 이렇게 매번 객체를 생성하고 그 객체를 직접 해제하는 작업은 매우 번거롭고 휴먼에러가 발생할 가능성이 커집니다. (이중해제, 해제된 메모리 접근, 메모리 누수) 자바에서는 이런 메모리 해제 작업을 GC가 대신 해줍니다. 사용하지 않는 객체의 메모리가 해제되지 않는다면 메모리 누수로 이어지고 OOM에러가 발생해 애플리케이션이 다운될 수도 있습니다. 메모리는 한정된 자원이기 때문에 사용하지 않는 부분은 해제를 해주어야합니다. JVM Heap JVM의 메모리는 크게 Meth..