분류 전체보기 318

PM2, Nginx //front app 배포

Node.js의 프로세스 매니저 PM2Node.js는 싱글스레드로 Node.js 애플리캐이션은 단일 CPU 코어에서 실행된다. 따라서 CPU의 멀티코어시스템을 사용할 수 없다. 이 문제를 해결하기 위해 클러스터(Cluster) 모듈을 통해 단일 프로세스를 멀티 프로세스(Worker)로 늘릴 수 있는 방법을 제공한다. 즉, 클러스터 모듈을 사용해서 마스터 프로세스에서 CPU 코어 수 만큼 워커 프로세스를 생성해 모든 코어를 사용하게 개발하면된다. PM2의 등장 배경애플리케이션을 실행하면 처음에는 마스터 프로세스만 생성된다. 이때 CPU 개수만큼 워커 프로세스를 생성하고 마스터 프로세스와 워커 프로세스가 각각 수행해야 할 일들을 정리해서 구현하면 된다. 예를 들어 워커 프로세스가 생성됐을 때 온라인 이벤트가..

DevOps 2023.06.13

모놀로리식, 마이크로서비스 아키텍쳐

잘못 알고있던 내용 : 1. 모놀로리식도 확장이 쉽다. 부하분산기 뒤에 애플리케이션 인스턴스를 여러 개 실행하면 되는 것. 2. 서비스마다 자체 DB를 둔다는 것이 자체 DB를 설치해야 한다는 의미가 아니다. 3. 서비스마다 자체 소스코드 저장소가 있고, 서비스마다 자체 자동화 개발 파이프라인(젠킨스 CI)이있다. 마이크로 서비스 아키텍쳐 근본 : - 3계층 아키텍쳐 - 웹 애플리케이션 설계 - 객체 지향 설계를 응용한 비즈니스 로직 개발 - RDBMS 사용법 : SQL 과 ACID 트랜잭션 - 메시지브로커와 REST API를 활용한 IPC - 인증/인가의 보안 개념 특징 : 1. Y축 확장 : 기능에 따라 애플리케이션을 서비스로 분해 2. Y축을 기준으로 X축확장(복제) 또는 Z축 확장(파티셔닝). X..

ufw, iptables 차이

요약 : 리눅스 방화벽 중 가장 많이 사용되는게 iptables 인데 iptables 의 작업을 간편화 해 주는 소프트웨어가 UFW(Uncomplicated Fore Wall = 복잡하지 않은 방화벽) iptables은 kernel level의 tool이며, ufw는 내부에서는 iptables을 이용하며, 사용자가 좀 더 편리하게 사용할 수 있도록 만들어 놓은 tool이다. 즉 ufw는 iptables을 이용한 Frontend tool이다. nftables (nework filter tables)은 iptables을 대신하는 차세대 tool 이다. 1. 명령어 1. ufw 활성화 여부 확인 sudo systemctl is-enabled ufw 2. 설정 상태 확인 sudo ufw status verbos..

0.0.0.0, 127.0.0.1, 255.255.255.255

1. 0.0.0.0 = 모든 IP를 의미한다. = 컴퓨터, 모뎀 및 네트워크 카드에서 수신 대기 중임을 의미한다. = 네크워크에 액세스할 수 있는 곳이면 어디에서나 접근 가능함을 의미한다. = 라우팅 테이블에서 사용되는 경우 기본 게이트웨이를 식별하는데 0.0.0.0에 대한 경로가 기본경로이다. 0.0.0.0은 local machine의 모든 IPv4 주소를 의미해서, 0.0.0.0으로 접근하면 로컬 호스트의 모든 IPv4로 되어있는 호스트에 접근이 가능하다. ex) mac을 CI 서버로 사용할 때 설정 변경 127.0.0.1 -> 0.0.0.0 Label homebrew.mxcl.jenkins ProgramArguments /usr/libexec/java_home -v 1.8 --exec java -D..

CS/Network 2023.05.06

Docker, UFW, IPTABLES 방화벽

1. 데스크탑(프리도스)에 우분투를 설치하여 개인서버로 사용하면서 발생한 문제점 1) 공유기에서 포트포워딩을 해 외부ip -> 데스크탑 ip로 바라보게한 후 docker에서도 마찬가지로 포트포워딩해 특정 이미지 바라보게 했으나, 로컬에서는 docker에서 띄운 nginx라던지, was에 접근 가능하나 외부ip:특정포트를 타고 들어오면 도커에 연결이 안되었음. * 도커 네트워크 쪽 추가 공부 https://velog.io/@cloudjun/UFW-DOCKER-%EC%A0%9C%EB%8C%80%EB%A1%9C-%EB%B0%A9%ED%99%94%EB%B2%BD%EC%97%90-%EC%A0%81%EC%9A%A9%EB%90%98%EC%A7%80-%EC%95%8A%EB%8A%94-%EB%AC%B8%EC%A0%9C ..

ORACLE D/B

1. SQL 내부 수행구조 ORACLE에서는 디스크에 저장된 데이터 집합(Datafile, Redo Log File, Control File 등)을 데이터베이스라고 부른다. 그리고 SGA (System Global Area) 공유 메모리 영역과 이를 액세스하는 프로세스 집합을 인스턴스라고 부른다. 기본적으로 하나의 인스턴스가 하나의 데이터베이스를 액세스하지만, RAC(Real Application Cluster)환경에서는 여러 인스턴스가 하나의 데이터베이스를 액세스할 수 있다. 2. 데이터 저장구조 물리적으로는 데이터 파일에 데이터를 저장하고 관리한다. 공간을 할당하고 관리하기 위한 논리적 구조를 아래에서 본다. 1) 블록 ( =페이지) 대부분의 DMBS에서는 I/O는 블록 단위로 이루어진다. 데이터를 ..

CS/DataBase 2023.04.21

ORACLE 인덱스

1. 인덱스 기본구조 인덱스는 통상적으로 B*Tree 구조를 가진다. 처음에는 루트 노드에 데이터가 싸이는데 점점 데이터 늘어날 수록 루트 노드 -> 브랜치 노드 -> 리프노드로 연결된다. 인덱스 탐색은 수평적 탐색과 수직적 탐색으로 나뉜다 .수평적 탐색은 인덱스 리프블록에 저장된 레코드끼리 연결된 순서에 따라 좌우로 스킨하기 때문에 수평적 탐색이라한다. 반면, 수직적 탐색은 루프에서 리프가지 아래쪽으로 진행하기 때문에 수직적 탐색이라한다. 2. 인덱스 스캔방식 1) Index Range Scan : 인덱스 루트 블록에서 리프블록까지 수직적으로 탐색한 후에 리프블록을 필요한 범위만 스캔하는 방식이다. ( 가장 일반적이고 정상적인 형태의 액세스 방식이다.) 1-1) Index Range Scan Desce..

CS/DataBase 2023.04.21

ORACLE 파티셔닝

파티셔닝이란 ? 테이블 또는 인덱스 데이터를 파티션 단위로 나누어 저장하는 것을 의미한다. 논리적으로 하나의 테이블을 물리적으로 나누어 저장한다. ex) 로그 테이블 테이블을 파티셔닝한다면 파티션 키에 따라 물리적으로 별도의 세그먼트에 데이터를 저장하며, 인덱스도 별도의 세그먼트에 데이터를 저장한다. -> 파티셔닝은 내부에 몇 개의 세그먼트를 생성하고 그것들이 논리적으로 하나의 오브젝트임을 메타 정보로 딕셔너리에 저장해두는 것에 그치지 않는다. 파티션 되지 않은 일반 테이블은 테이블과 세그먼트가 1:1관계지만, 파티션 테이블일 때는 1:M 관계다. 인덱스를 파티션할 때도 마찬가지다. 관리적 측면에서 파티션 단위로 백업, 추가, 삭제, 변경 가능해 이점이 있다. ex) 보관주기가 지난 데이터를 별도 장치에..

CS/DataBase 2023.04.21