목록2024/11 (53)
내 잡다한 노트
빌드(Build)란 무엇인가?**빌드(Build)**는 소스 코드를 실행 가능한 상태(프로그램)로 만드는 전체 과정을 말합니다. 이는 소스 코드 파일, 설정 파일 등을 컴퓨터가 이해할 수 있는 형태(바이너리, 실행 파일 등)로 변환하는 작업을 포함합니다. 빌드는 개발자 환경(소스 코드)에서 실제 사용자 환경(배포 가능한 프로그램)으로 옮겨가는 다리 역할을 합니다. 빌드의 주요 단계빌드는 다양한 과정을 포함하며, 사용되는 언어와 환경에 따라 다르지만 보통 아래 단계를 포함합니다.코드 컴파일사람이 작성한 소스 코드(텍스트 파일)를 컴퓨터가 이해할 수 있는 기계어(바이너리)로 변환.예:C언어는 gcc를 사용하여 .c 파일을 실행 가능한 .exe 파일로 변환.Java는 javac를 사용하여 .java를 .cl..
HDFS(Hadoop Distributed File System)와 NFS(Network File System)는 둘 다 파일을 저장하고 액세스하는 시스템이지만, 설계 목적과 작동 방식이 크게 다르기 때문에 NFS와 같은 일반적인 파일 스토리지와는 본질적으로 다른 점이 있습니다. 아래에서 그 차이를 더 자세히 설명하겠습니다.HDFS와 NFS의 주요 차이1. 설계 목적NFS:네트워크 상에서 중앙 서버의 파일을 여러 클라이언트가 공유할 수 있도록 설계된 일반적인 파일 스토리지입니다.주로 POSIX 호환성(일반적인 파일 시스템 표준)을 유지하며, 파일 읽기/쓰기 작업에 적합합니다.워크로드: 일반적인 애플리케이션 파일 접근, 소규모 데이터 공유.HDFS:대용량 데이터를 분산 저장하고 처리하기 위해 설계된 빅데이..
Dockerfile에서 UID를 설정하거나 명시적으로 처리하는 이유는 컨테이너의 사용자 권한 관리 및 보안성을 강화하기 위해서입니다. 아래 주요 이유를 살펴보겠습니다.1. 호스트와의 파일 권한 충돌 방지컨테이너에서 생성된 파일은 기본적으로 컨테이너 내부의 사용자 ID(UID)와 호스트 시스템의 사용자 ID가 다를 수 있습니다. 이 경우, 컨테이너가 생성한 파일이 호스트에서 읽기/쓰기 불가능하거나, 접근 권한 문제를 일으킬 수 있습니다.예: 컨테이너에서 UID가 1001인 사용자가 생성한 파일은 호스트에서 다른 사용자처럼 보일 수 있습니다.해결: Dockerfile에서 컨테이너 내부의 사용자와 UID를 명시적으로 설정하면, 호스트 시스템과의 호환성을 높일 수 있습니다.2. 보안 강화컨테이너는 기본적으로 r..
Git Flow 전략은 제외합니다. 최근에 포스팅을 했기 때문에. 1. GitHub FlowGitHub Flow는 단순하고 가벼운 브랜치 전략으로, 지속적 배포(Continuous Deployment)에 적합합니다.특징main 브랜치만 존재하며, 항상 배포 가능한 상태를 유지.모든 작업은 feature 브랜치에서 이루어지고, 작업 완료 후 main에 병합.병합 시 코드 리뷰와 자동화된 테스트를 반드시 수행.흐름main에서 feature 브랜치 생성.작업 완료 후 Pull Request 생성.코드 리뷰와 테스트 통과 후 main에 병합.병합 후 바로 배포.사용 시기배포 주기가 짧고, 빠른 릴리스가 중요한 프로젝트.단순한 워크플로우를 선호하는 소규모 팀. 2. GitLab FlowGitLab Flow는 Gi..
Git Flow는 Git을 활용한 브랜치 관리 전략 중 하나로, 코드의 개발, 릴리스, 배포 과정을 체계적으로 관리할 수 있도록 설계된 워크플로우입니다. Vincent Driessen이 제안한 방식으로, 프로젝트 개발 단계에 따라 명확한 브랜치 구조와 규칙을 제공합니다. 핵심 아이디어Git Flow는 다음과 같은 주요 브랜치로 구성됩니다:main (또는 master)항상 안정적이고 배포 가능한 코드만 존재.실제 운영 환경에 배포된 코드가 이 브랜치에 포함됩니다.develop새 기능 개발이 완료된 코드를 통합하는 브랜치.개발 진행 중의 최신 상태를 유지합니다. 주요 보조 브랜치Git Flow 전략에서는 기능 추가, 버그 수정, 배포 등을 위한 브랜치를 체계적으로 구분합니다.Feature 브랜치목적: 새..
git fetch와 git pull은 둘 다 원격 저장소(Remote Repository)의 변경 사항을 가져오는 명령어이지만, 동작 방식과 목적이 다릅니다. 1. 기능 요약git fetch원격 저장소의 변경 사항을 로컬 저장소에 가져오기만 합니다.로컬 브랜치에는 영향을 주지 않습니다.예: 원격 브랜치와 로컬 브랜치 간의 변경 내역을 확인하거나 병합하기 전에 사용.git pull원격 저장소의 변경 사항을 가져오고, 로컬 브랜치에 병합까지 수행합니다.사실상 git fetch + git merge를 한 번에 실행하는 명령어입니다. 2. 작업 흐름 차이git fetch원격 브랜치의 변경 사항을 가져옵니다.원격 브랜치(origin/branch-name)에 반영됩니다.로컬 브랜치는 그대로 유지되며, 병합 여부는 ..
git switch와 git checkout은 브랜치 이동 및 생성과 관련된 명령어입니다. git switch는 Git 2.23(2019년 릴리스)부터 추가된 명령어로, 기존에 과도하게 많은 역할을 담당하던 git checkout의 기능을 일부 분리한 명령어입니다. 1. 기능 비교git checkout역할:브랜치 변경.브랜치 생성 및 이동.특정 커밋이나 파일 체크아웃.작업 디렉터리의 파일 복구.예제:# 브랜치 이동 git checkout feature/login # 새로운 브랜치 생성 및 이동 git checkout -b feature/new-branch # 특정 커밋 체크아웃 git checkout # 파일 복구 git checkout HEAD~1 -- file.txt git switch역할:브랜치..
엄청 자주 쓰이는 add, commit, push, pull은 제외하려고 한다. 1. 브랜치 관련 명령어git branch현재 브랜치 목록 확인.git branch 새로운 브랜치 생성:git branch 브랜치 삭제:git branch -d git switch브랜치 변경 (체크아웃 대신 사용 가능). git switch 새로운 브랜치 생성 후 이동:git switch -c git merge다른 브랜치를 현재 브랜치에 병합. git merge git rebase다른 브랜치의 커밋을 현재 브랜치로 재배치. git rebase 충돌 해결 후 재개: git rebase --continue 2. 작업 내용 확인 및 디버깅git status현재 상태 확인 (변경 사항, 스테이징 여부). git statusgi..