728x90
반응형

Backend 26

[Architecture] MSA : MicroService Architecture

요즘 개발하면서 MSA를 정말 많이 보고 듣게 되어, 개념에 대해 정리해보고자 글을 쓰게 되었습니다. 제가 현재 하고 있는 프로젝트는 규모가 크지않아서 MSA를 적용하는 것에 대해서 고민을 한 결과 적용을 안하는 것이 더 좋다고 판단하였습니다. 하지만 다음 기회에 규모가 큰 프로젝트를 할 때 MSA를 적용해보면 좋을 것 같습니다. Monolithic Architecture 소프트웨어의 모든 구성요소가 한 프로젝트에 통합되어 있는 형태입니다. 웹 개발을 예로 들면 웹 프로그램을 개발하기 위해 모듈별로 개발을 하고, 개발이 완료된 웹 어플리케이션을 하나의 결과물로 패키징하여 배포하는 형태를 말합니다. 웹의 경우에는 WAR 파일로 빌드외어 WAS에 배포하는 형태를 말합니다. 주로 소규모 프로젝트에서 사용합니다..

[Relational Databases] Datasource Routing

사용자에 따라서 데이터베이스를 다르게 지정하고 싶다는 생각을 했습니다. 그래서 사용자에 따른 다른 데이터베이스를 적용하는 법을 알아보았습니다. 개요 User를 간단하게 만들고 Repository와 Controller를 만들어서 API를 구축하였습니다. 그리고 회사에 따라 DB를 변경하여 저장하고 조회하는 기능을 구현해보겠습니다. 구조 구조는 다음과 같습니다. User API 부분은 기본적인 코드라서 Database Routing 부분만 설명드리겠습니다. 전체코드는 아래에 깃허브 링크를 참고해주세요. 1. application.properties 설정 #company01과 company02는 제가 설정한 이름입니다. 임의로 이름을 지정하시면 됩니다. #저는 두 회사의 하나의 서비스를 공급할 때, 데이터베이..

[Relational Databases] DB Index 설정

인덱스를 사용하는 이유 일반적으로 SQL 서버에 데이터를 저장할 때 내부적으로는 아무런 순서 없이 저장합니다. 이때, 데이터 저장 영역은 Heap이라고 합니다. Heap 에서는 인덱스가 없는 테이블의 데이터를 찾을 때 전체 데이터 페이지의 처음 레코드부터 끝 페이지 마지막 레코드 까지 모두 조회하게 됩니다. 이러한 검색 방식을 풀 스캔(Full Scan) 또는 테이블 스캔(Table Scan) 이라고 합니다. 다음과 같은 검색의 속도를 향상 하기 위해 인덱스를 사용하게 됩니다. 사용 예시 다음과 같은 테이블이 있다고 가정하겠습니다. Create Table User ( uuid Binary(16) Primary Key, name Varchar(20) Not Null, age Integer Not Null,..

[OS] POSIX 기초

POSIX (Portable Operation System Interface) 이식 가능한 운영 체제 인터페이스의 약자로, 서로 다른 UNIX OS의 공통 API를 정리하여 이식성이 높은 UNIX 응용 프로그램을 개발하기 위한 목적으로 IEEE가 책정한 애플리케이션 인터페이스 규격입니다. 즉, 한 운영체제에서 개발한 프로그램을 다른 운영체제에서도 쉽게 돌아가도록 하는 표준을 말합니다. (소스코드의 호환) 표준 스트림 특정한 프로그래밍 언어 인터페이스 뿐 아니라 유닉스 및 유닉스 계열 운영체제에서 컴퓨터 프로그램과 그 환경 사이에 미리 연결된 입출력 통로를 말합니다. 표준 스트림으로 인해 프로그래머나 프로그램에서 입출력을 사용해야 할 때, 입출력 장치를 연결하기 위한 추가 작업 필요 없이 입출력을 사용할 ..

Backend/OS 2022.09.11

[OS] I/O Management

입출력 관리 컴퓨터에서 연산 작업과 함께 입출력 작업은 중요합니다. 예를 들면 컴퓨터 화면을 보는 작업, 문서를 작성하는 작업 등 대부분이 입출력 작업이기 때문입니다. 마우스, 키보드, 모니터와 같은 다양한 장치들이 컴퓨터에서 잘 동작하도록 하려면 입출력 장치와 컴퓨터 사이에 공통된 인터페이스가 존재해야 합니다. 아래와 같이 입출력 제어기를 통해 메인 메모리와 프로세서와의 상호작용을 위해 시스템 버스에 연결되어 있는 것을 볼 수 있습니다. 입출력 하드웨어의 구성 하드웨어 장치는 케이블을 통하거나, 무선으로 신호를 보내 컴퓨터와 통신을 합니다. 이때 포트를 통해 컴퓨터에 접속하는데 하드웨어 장치의 또 다른 구성요소는 제어기 입니다. 제어기는 포트나 입출력 장치를 제어하는 전자 회로의 집합체이며 많은 입출력..

Backend/OS 2022.09.03

[OS] Interprocess Communication

프로세스 간 통신이 필요한 이유 프로세스들이 서로의 공간을 쉽게 접근할 수 있다면 데이터나 코드가 바뀔 수 있기 때문에 위험합니다. 안전하게 프로세스 간에 통신을 할 수 있게 하기 위해서 IPC를 이용한 통신 방법을 제공합니다. 여러 프로세스들이 많은 일들을 처리하면서 성능을 내기 위해서 서로 상태 확인과 데이터 송수신이 필요합니다. IPC 내부 프로세스들 사이에 데이터를 효율적으로 주고 받기 위한 통신을 말합니다. IPC 기법 1. 파이프 (Pipe) 통신을 위한 메모리 공간을 생성하여 프로세스가 데이터를 주고받을 수 있게 합니다. fork()를 통해 자식 프로세스를 생성하였을 때 부모와 자식간의 통신 할 때 사용합니다. 기본 파이프는 단방향 통신입니다. 그렇기 때문에 일반적으로 2개의 파이프를 사용합..

Backend/OS 2022.08.19

[OS] Memory Management (2) - 메모리 관리 방법

Address Binding 프로세스의 주소는 논리적 주소와 물리적 주소로 나뉩니다. 논리적 주소는 가상 주소라고도 하며, CPU가 생성하는 주소입니다. 프로세스마다 독립적으로 가지는 주소 공간이기 때문에 프로세스의 내부에서 사용하고, 프로세스마다 0부터 시작합니다. 물리적 주소는 프로세스가 실행되기 위해 실제로 메모리에 올라가는 위치입니다. Address Binding 프로그램이 어떤 물리적 주소에 Load 될지 결졍하는 과정입니다. Address Binding 종류 Compile Time 프로세스의 물리적 주소가 컴파일 때 결정됩니다. 프로세스가 메모리의 어느 위치에 들어갈지 알고 있다면 컴파일러가 절대 주소를 생성합니다. 컴파일 타임의 주소 할당은 내부에서 사용하는 논리적 주소와 물리적 주소가 동일..

Backend/OS 2022.08.16

[Relational Databases] Database Replication 구현

Database Replication 개념 [Relational Databases] Database Replication 개념 DB Replication 초기 서버를 구성할 때는 하나의 서버와 하나의 데이터베이스를 구성하지만, 사용자 많아지고, 데이터베이스에 많은 Query가 발생하게 되면 이 트래픽을 처리하기 힘든 상황까지 오게 lakelight.tistory.com Database Replication 구현 Database Replication을 진행하기에 앞서 준비해야할 것들이 있습니다. 먼저 VirtualBox를 설치하고 ubuntu-20.04.4-desktop-amd64.iso (이미지 파일) 을 다운받습니다. Ubuntu 20.04.4 LTS (Focal Fossa) Select an imag..

[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은 실시간 복제본 데이터베이스 서버를 운용하는 것을 의미합니다. 기준이 되는 서버는 마스터 ..

728x90
반응형