study/etc 17

리눅스 파이프 (Pipe, |)

파이프란?한 명령어의 출력을 다른 명령어의 입력으로 전달하는 명령어장점데이터를 중간에 파일로 저장하지 않고 직접 전달하여 메모리를 절약하고 명령어들을 빠르게 실행 가능여러 명령어를 파이프(|)로 연결하여 복잡한 데이터 처리를 단순하게 할 수 있음e.g. cat file.txt | grep "keyword"cat을 통해 file.txt 파일의 내용을 출력|를 통해 그 출력을 grep "keyword"의 입력으로 전달grep을 통해 전달받은 내용 중 "keyword"가 포함된 줄만 출력

study/etc 2024.11.11

Docker와 Docker Compose의 장단점과 도입하기 좋은 상황

Docker의 장단점Docker의 장점‘컨테이너’라는 독립된 실행 환경을 제공하여, 개발-배포 환경 간의 차이로 인한 문제를 줄일 수 있음컨테이너는 독립적으로 실행되므로 여러 애플리케이션을 같은 서버에서 격리하여 운영할 수 있어 서로 다른 종속성이나 라이브러리의 충돌을 방지함컨테이너는 가상머신처럼 OS를 별도로 설치하지 않기 때문에 가상머신에 비해 자원을 덜 소모함 → 더 많은 애플리케이션을 같은 서버 내에서 실행할 수 있음애플리케이션의 모든 설정, 종속성, 파일 등을 이미지에 포함시키므로 배포 과정에서 환경 설정의 차이로 인한 문제가 거의 발생하지 않음동일한 Docker 이미지를 이용하면 어느 서버에서도 일관된 환경에서 실행 가능 (이식성)Docker 이미지는 버전별로 관리할 수 있어 특정 버전의 이미..

study/etc 2024.11.02

Docker Container 종료 시점: 컨테이너의 기본 동작과 라이프 사이클

Docker 컨테이너 기본 동작Docker 컨테이너는 기본적으로 컨테이너 내에서 실행된 메인 프로세스가 종료되면 컨테이너 자체도 종료됨Dockerfile 컨테이너는 ENTRYPOINT ["npm", "run", "start:dev"]로 실행될 때는 정상적으로 실행되지만, ENTRYPOINT ["echo", "hello"]로 실행될 때는 정상적으로 실행되지 않음ENTRYPOINT ["npm", "run", "start:dev"]: Node.js 애플리케이션 실행 후 지속적으로 실행 상태를 유지하며 서버를 운영 → 컨테이너도 실행 상태를 유지ENTRYPOINT ["echo", "hello"]: echo 명령어는 단순히 "hello"라는 문자열을 출력 후 즉시 종료 → 컨테이너 내에서 실행된 메인 프로세스(e..

study/etc 2024.08.08

리눅스 시그널

리눅스 시그널이란?운영 체제 커널이 프로세스에 특정 이벤트를 알리기 위해 사용하는 인터프로세스 커뮤니케이션 메커니즘으로, 시그널을 사용하면 프로세스는 다른 프로세스, 운영 체제, 또는 사용자의 조작으로부터 이벤트를 받을 수 있음주요 시그널 종류SIGINT (2): 인터럽트 시그널 (터미널에서 Ctrl+C)사용자나 시스템 관리자가 프로세스를 중단하고 싶을 때 주로 사용SIGKILL (9): 강제 종료 시그널프로세스를 강제로 종료시키며 프로세스가 이 시그널을 무시하거나 처리할 수 없음e.g. docker kill 명령은 이 시그널을 보냄# PID 1234인 프로세스에 SIGKILL 시그널 보kill -9 1234# 또는kill -SIGKILL 1234SIGTERM (15): 종료 요청 시그널프로세스에 종료를..

study/etc 2024.07.29

Mac에서 SSH 활용하여 EC2에 접속하기

1. pem 파일이 있는 디렉터리로 이동 후 파일 권한 설정$ chmod 600 "pem_파일_경로.pem"600: 소유자 읽기 + 쓰기 권한 2. EC2 인스턴스의 IP나 도메인에 연결$ ssh -i "pem_파일_경로.pem" "사용자_이름"@"EC2_도메인"사용자 이름: ubuntu 3. SSH 구성 파일 사용하여 짧은 명령으로 연결하기a. pem 파일 ssh 디렉터리 하위에 복사$ cp "pem_파일_경로.pem" ~/.ssh/b. config 파일 생성$ vi ~/.ssh/configc. 구성 파일에 다음 내용 추가Host 간편하게_입력할_명령어 (e.g. my-ec2-server)HostName EC2_도메인User 사용자_계정 (e.g. ubuntu)IdentityFile ~/.ssh/"pe..

study/etc 2024.07.29

Docker에서는 pm2를 안 쓰는 이유

Docker를 쓰기 전에 pm2를 사용했던 이유 (pm2 기능)여러 인스턴스의 프로세스 관리자동 재시작로드 밸런싱로깅 및 모니터링일관된 방식으로 프로세스 설정 및 유지지속적 배포와 롤백 기능 하지만!!!!!!!!!!!!!Docker의 등장 이후 컨테이너화된 애플리케이션의 관리가 표준화되면서 pm2의 역할은 상대적으로 줄어들게 됨Docker는 애플리케이션 프로세스 관리를 자체적으로 처리하는 킹갓 도구이기 때문 Docker를 사용하는 이유 (Docker 기능)최소한의 구성 요소만 포함된 경량 이미지를 만듦 → 컨테이너의 크기를 줄이고 필요한 자원 사용 최소화Docker 컨테이너는 단일 프로세스만 실행하는 것을 권장 → 컨테이너의 설계와 유지보수를 단순화하고, 프로세스 관리 도구인 pm2의 필요성을 없앰호스트..

study/etc 2024.07.25

정적 팩토리 메서드

정적 팩토리 메서드(Static Factory Method)간접적으로 생성자를 호출하여 객체를 생성하는 클래스 메서드 장점 1. 생성 목적을 이름으로 표현 가능new라는 키워드를 통해 객체를 생성하는 생성자는 매개변수의 유형과 개수 등 내부 구조를 잘 알고 있어야 목적에 맞게 객체를 생성할 수 있음→ 뚜렷한 이름과 목적을 가진 정적 팩토리 메서드를 호출한다면 객체 생성의 의미 파악이 쉬워짐class Car { private brand: string; private constructor(brand: string) { // private 설정으로 외부 접근 불가 this.brand= brand; } // 정적 팩토리 메서드 public static brandOf(bra..

study/etc 2024.06.27

높은 응집도와 낮은 결합도

응집도와 결합도객체지향 프로그래밍에서는 높은 응집도와 낮은 결합도를 가지는 코드를 지향응집도: 프로그램의 한 요소가 가진 책임과 수행하는 기능이 얼마나 밀접하게 뭉쳐 있는지를 나타내는 정도결합도: 코드의 한 요소가 다른 요소와 얼마나 강하게 연결되어 있고, 서로 얼마나 의존적인지를 나타내는 정도 응집도가 낮거나 결합도가 높다면?다른 클래스의 변화에 민감해져 코드를 수정하려면 연관된 다른 클래스를 함께 이해하고 변경해야 함재사용성과 유지보수성 감소 객체가 높은 응집도와 낮은 결합도를 가지려면?명확한 목적을 위해 밀접하게 연관된 기능들이 모이도록각각 단일 목적을 가져서 서로 독립성이 높도록자기의 역할에 대한 책임을 독립적으로 가지나 너무 많은 일을 하지 않도록다른 객체와 협력하도록설계하여 코드의 가독성과 유..

study/etc 2024.06.26

도메인 객체를 IoC 컨테이너로 관리하지 않는 이유

제어의 역전(Inversion of Control, IoC)전통적인 프로그래밍 방식에서 프로그래머가 객체의 생성, 관리, 의존성 주입 등을 직접 코드에서 처리했던 것을 프레임워크 또는 라이브러리가 담당하게 하는 것IoC 컨테이너제어의 역전을 구현하는 주요 메커니즘 중 하나객체 생성 및 라이프사이클 관리 → 애플리케이션 시작 시 필요한 모든 객체(빈)를 생성하고 초기화하여 프로그래머는 이와 관련된 코드를 작성할 필요 없고 비즈니스 로직에 집중할 수 있음객체 간 의존성 주입 → 객체가 자신의 의존성을 직접 생성하지 않으므로 객체 간의 결합도를 낮추고, 코드의 유연성과 재사용성을 높이며, 테스트 시 Mock 객체 쉽게 주입 가능하므로 테스트 용이성을 높임의존성 등의 설정 구성 → 객체의 생성, 초기화, 소멸 ..

study/etc 2024.06.26

ISO 8601

@notion ISO 8601이란? 국제 표준화 기구(International Organization for Standardization: ISO)에서 제정한 날짜와 시간에 대한 표준 규격 날짜와 시간을 표시하는 다양한 형식을 표준화하여 국제적으로 일관된 방법으로 표현할 수 있도록 함 이 표준을 준수하면 서로 다른 지역, 시스템 및 언어 간 날짜와 시간 형식의 일관성이 유지되며, 다른 시스템 간의 상호 운용성을 향상시킬 수 있음 숫자 8601은 이 표준의 고유 식별 번호로, ISO에서 여러 분야에 걸쳐 다양한 표준을 제정하고 있기 때문에 각 표준에는 고유한 번호가 부여됨 ISO 8601의 표기 방법 년(YYYY)-월(MM)-일(DD)T시(hh):분(mm):초(ss)로 표시함 (e.g. 2024-03-26..

study/etc 2024.03.26