목록2024/11 (53)
내 잡다한 노트
**멀티스테이지 빌드(Multi-stage Build)**는 Dockerfile에서 단계별로 빌드 환경을 분리하고, 최종 실행에 필요한 최소한의 파일만 포함하여 경량화된 이미지를 생성하는 방식입니다. 멀티스테이지 빌드란?멀티스테이지 빌드는 Dockerfile 내에서 여러 베이스 이미지를 정의하고, 각 단계(stage)에서 작업을 수행하며, 최종 단계에서는 필요한 파일만 가져옵니다.빌드 도구(컴파일러, 패키지 매니저 등)는 중간 단계에서만 사용하고, 최종 이미지는 실행 파일이나 애플리케이션 코드만 포함.최종 이미지는 작고, 불필요한 파일(빌드 도구 등)이 제거된 상태로 배포. 멀티스테이지 빌드를 사용하는 이유이미지 크기 최소화빌드 과정에서 필요한 도구(예: gcc, make)가 최종 이미지에 포함되지 않..
Dockerfile 최적화는 이미지 크기를 줄이고, 빌드 속도를 개선하며, 실행 성능과 보안을 강화하는 데 중점을 둡니다. 잘 최적화된 Dockerfile은 효율적인 CI/CD 파이프라인과 배포 환경을 구축하는 데 필수적입니다. 1. 이미지 크기 줄이기2. 빌드 속도 개선3. 실행 성능4. 보안 이걸 중점으로 최적화를 하도록 하자. 1. 이미지 크기 최적화(1) 경량 베이스 이미지 사용항상 필요한 최소한의 구성 요소만 포함된 경량 베이스 이미지를 사용합니다.예:ubuntu 대신 debian:slim 또는 alpine 사용.Python 프로젝트의 경우 python:3.9-slim 사용. (2) 멀티스테이지 빌드빌드 단계와 실행 단계를 분리하여 최종 이미지에서 불필요한 빌드 도구를 제외.멀티스테이지 빌드..
tmux는 터미널 멀티플렉서로, 하나의 터미널에서 여러 세션을 실행하거나, 세션을 유지하고 다시 연결할 수 있도록 도와줍니다. 다음은 tmux를 효율적으로 사용하기 위해 자주 쓰이는 명령어와 설명입니다. 기본 tmux 명령어1. 세션 관리새 세션 생성새로운 tmux 세션을 생성하고 이름을 지정합니다.tmux new -s 현재 세션에서 분리세션에서 빠져나오지만, 세션은 백그라운드에서 계속 실행됩니다.Ctrl-b d세션 목록 보기실행 중인 모든 tmux 세션을 표시합니다.tmux list-sessions 기존 세션에 연결특정 세션에 다시 연결합니다.tmux attach -t 세션 종료세션 안에서 exit을 입력하여 종료.exit
엔지니어링에서 사용하는 TA(Technical Architect), AA(Application Architect), **SA(Solution Architect)**는 시스템 설계와 개발 과정에서 서로 다른 수준에서 역할을 수행하는 아키텍처(Architecture) 전문 분야를 지칭합니다. 이 용어들은 IT 및 소프트웨어 엔지니어링에서 주로 사용되며, 각 용어가 맡는 책임과 초점은 다릅니다. 1. TA (Technical Architect)의미**TA(Technical Architect)**는 특정 기술(Tech Stack)이나 소프트웨어 시스템의 기술적인 구조와 구현 세부 사항을 설계하고 최적화하는 데 초점을 맞춘 역할입니다.주요 역할기술 스택(프레임워크, 프로그래밍 언어, 데이터베이스 등)을 선정하고..
**Throttling(쓰로틀링)**은 시스템, 네트워크, 애플리케이션 또는 API에서 과도한 요청이나 작업을 제한하여 성능을 유지하고 리소스 사용을 최적화하는 기술 또는 메커니즘을 말합니다. 또는 PC, 노트북의 CPU, GPU 등이 지나치게 과열될 때 기기의 손상을 막고자 클럭과 전압을 강제적으로 낮추거나 강제로 전원을 꺼서 발열을 줄이는 기능으로 불리기도 한다. API Throttling은 주로 API를 사용하는 환경에서 적용되며, 클라이언트가 일정 시간 동안 보낼 수 있는 요청 수를 제한하여 API 서버가 과부하에 걸리지 않도록 보호합니다. 1. Throttling의 일반 개념목적리소스 보호: 서버, 네트워크, 데이터베이스 등의 과부하를 방지.공정한 리소스 분배: 여러 사용자 간에 리소스를 공..
Jenkins의 Scripted Pipeline은 Groovy 언어를 기반으로 작성됩니다. Scripted Pipeline은 Jenkins Pipeline의 저수준 구문으로, Jenkins가 Groovy를 사용하여 동작하기 때문에 Scripted Pipeline은 Groovy로 작성해야 합니다. 왜 Groovy만 사용 가능한가?Jenkins의 내부 구현이 Groovy 기반Jenkins는 내부적으로 Groovy를 기반으로 동작하며, Scripted Pipeline은 이를 직접 활용하는 방식입니다.Groovy는 JVM 기반Jenkins는 Java 기반으로 동작하며, Groovy는 JVM(Java Virtual Machine) 위에서 실행되므로 호환성이 뛰어납니다. 다른 언어를 사용할 수 없는 이유는?Jenk..
Jenkinsfile은 Jenkins 파이프라인을 정의하는 스크립트 파일로, CI/CD 작업(Continuous Integration/Continuous Deployment)을 자동화하기 위한 핵심 구성 파일입니다. Jenkinsfile은 Jenkins가 수행할 빌드, 테스트, 배포 등 여러 작업을 명시적으로 작성한 파일입니다. Jenkinsfile의 두 가지 스타일1. Declarative Pipeline (선언형)Jenkins Pipeline을 직관적이고 읽기 쉽게 작성할 수 있는 고수준 구문 제공.CI/CD 작업 흐름을 pipeline, stages, steps로 구조화.장점:간결하고, 초보자도 사용하기 쉬움.에러 처리가 자동으로 포함됨.예:pipeline { agent any st..
1. Active-Standby란?Active-Standby 구성은 하나의 시스템(Active)이 동작 중일 때, 다른 시스템(Standby)은 대기 상태로 유지되는 구조를 의미합니다.목적: 고가용성(HA, High Availability)을 보장하기 위해 준비된 대기 시스템을 마련하는 것.Standby 시스템은 Active 시스템이 실패했을 때 동작을 시작하도록 설계됩니다.이 개념은 수동 또는 자동으로 동작 전환(Failover)을 구현할 수 있습니다. 2. Auto-Failover란?Auto-Failover는 Active 시스템에 장애가 발생했을 때, Standby 시스템으로 자동으로 전환하는 메커니즘을 의미합니다.Auto-Failover는 추가적인 메커니즘이나 소프트웨어(예: 클러스터링 툴, 장애 ..