Snapshot vs. Delta

Snapshot vs. Delta 스냅샷(Snapshot)과 델타(Delta)는 데이터 변화를 관리하는 두 가지 근본적인 접근 방식이다. 스냅샷: 특정 시점의 전체 시스템 상태를 저장한다. Git이 대표적으로, 각 커밋 시 프로젝트 전체의 파일 상태를 기록한다. 델타: 이전 버전 대비 변경된 부분만 저장한다. SVN, CVS 등 전통적 VCS에서 사용되며, 저장 공간 효율성이 장점이다. 이 두 방식은 저장 효율성, 성능, 복구 속도에서 차이를 보이며, 현대 시스템에서는 버전 관리 시스템(Git, SVN 등), 백업 솔루션, 데이터베이스 시스템 등 여러 컴퓨팅 분야에서 중요하게 사용된다. 또한, 두 방식의 혼합하여 사용하는 하이브리드 접근법(예: Git의 git gc를 통한 델타 압축)도 활용된다. ...

September 28, 2024 · 13 min · Me

Git Submodule

Git Submodule Git Submodule 은 하나의 Git 저장소 안에 또 다른 Git 저장소를 포함시킬 수 있도록 하는 기능이다. 이는 외부 라이브러리, 공통 모듈, 또는 서드파티 코드 등을 독립적으로 유지하며 주 저장소와 연동하여 사용하는 데 활용된다. 서브모듈은 특정 커밋을 참조하는 방식으로 작동하며, 주 저장소 (부모 저장소) 와 서브모듈 저장소 (자식 저장소) 간의 명확한 경계를 유지한다. 복잡한 프로젝트 구조에서 모듈화를 실현하고, 공통 코드의 버전 동기화 및 유지관리를 용이하게 한다. 핵심 개념 Git Submodule은 한 Git 저장소 (부모 저장소) 내에 다른 Git 저장소 (자식 저장소) 를 현재 저장소의 하위 디렉토리로 포함시키는 방식이다. 서브모듈은 다른 외부 저장소의 특정 커밋을 가리키는 주 저장소 내의 기록이다. 서브모듈은 매우 정적이며 특정 커밋만 추적한다. ...

September 28, 2024 · 22 min · Me

Git Subtree

Git Subtree Git Subtree 는 Git 에서 제공하는 저장소 관리 도구로, 하나의 저장소 안에 다른 저장소를 포함시켜 관리할 수 있게 해주는 기능이다. 서브모듈 (Submodule) 의 대안으로 개발되었으며, 주요 저장소 (상위 저장소) 에 하위 저장소의 파일들을 직접 포함시키는 방식으로 작동한다. Git Subtree 는 복잡한 프로젝트 구조에서 코드 재사용, 공유 라이브러리 관리, 여러 저장소의 통합 관리에 유용하며, 특히 상위 저장소에서 하위 저장소의 코드를 직접 수정하고 원래 하위 저장소에 변경사항을 반영할 수 있다는 점이 큰 특징이다. 이러한 기능은 팀 협업, 라이브러리 관리, 마이크로서비스 구조의 개발 등에서 활용된다. ...

September 28, 2024 · 13 min · Me

VCS comparison

VCS Comparison 버전 관리 시스템(VCS, Version Control System)은 소스 코드의 변경 이력을 추적하고 관리하는 도구이다. 이를 통해 개발자는 코드의 변경 사항을 기록하고, 이전 버전으로의 복원, 병합, 분기 등의 작업을 효율적으로 수행할 수 있다. VCS는 중앙 집중형(Centralized)과 분산형(Distributed)으로 구분되며, 각각의 시스템은 특정한 아키텍처와 기능을 제공한다. 대표적인 VCS로는 RCS, CVS, SVN, Git, Mercurial 등이 있으며, 각 시스템은 개발 환경과 팀의 요구 사항에 따라 선택된다. 이 시스템들은 시간적으로 진화해왔으며, 각기 다른 아키텍처와 접근 방식을 가지고 있다. RCS는 1980년대 초에 등장한 가장 초기의 시스템으로 단일 파일의 버전 관리에 중점을 두었다. CVS는 RCS를 기반으로 하되 다중 파일과 다중 개발자 지원을 추가했다. SVN은 CVS의 제한사항을 극복하기 위해 개발되었으며, 디렉토리 구조 관리와 원자적 커밋을 도입했다. ...

September 28, 2024 · 14 min · Me

Git Submodule vs. Subtree

Git Submodule vs. Subtree 깃 (Git) 은 소프트웨어 개발에서 널리 사용되는 분산형 버전 관리 시스템으로, 복잡한 프로젝트를 효율적으로 관리할 수 있게 해준다. 대규모 프로젝트에서는 종종 여러 저장소 (repository) 에 분산된 코드를 하나의 프로젝트 내에서 통합해야 하는 필요성이 생긴다. 이러한 필요성을 해결하기 위해 깃은 두 가지 주요 접근 방식인 서브모듈 (Submodule) 과 서브트리 (Subtree) 를 제공한다. Git Submodule 과 Git Subtree 는 모두 하나의 Git 프로젝트 안에서 다른 Git 저장소를 하위 프로젝트처럼 관리하기 위한 방식이다. 하지만 방법은 다르다. ...

September 28, 2024 · 13 min · Me

Conflict Resolution

Conflict Resolution Git 충돌 해결 (Conflict Resolution) 은 협업 개발 과정에서 발생하는 코드 충돌을 식별하고 해결하는 프로세스로, 3-way merge 알고리즘을 기반으로 한다. 여러 개발자가 동일한 파일의 동일한 부분을 수정할 때 발생하는 충돌을 식별하고, 해결하는 전략과 도구, 워크플로우를 포함한다. 주요 단계는 충돌 탐지 → 수동/자동 해결 → 검증으로 구성되며, 최근 AI 기반 자동화 도구들이 주목받고 있다. 핵심 개념 Git 충돌 해결 (Conflict Resolution) 은 두 개 이상의 개발자가 동일한 파일의 동일한 부분을 수정할 때 발생하는 충돌을 식별하고 해결하는 과정이다. 충돌은 Git 이 변경사항을 자동으로 병합할 수 없을 때 발생하며, 개발자가 수동으로 어떤 변경사항을 유지할지 결정해야 한다. ...

September 28, 2024 · 16 min · Me

Cloud vs. On-Premise

Cloud vs. On-Premise Cloud와 On-Premise는 기업의 IT 인프라를 구축하고 관리하는 두 가지 주요 방식을 설명하는 개념이다. 이 두 방식은 데이터 저장, 애플리케이션 호스팅, 그리고 전반적인 IT 리소스 관리에 있어 근본적인 차이를 보인다. 비교 항목 On-Premise 클라우드 초기 구축 비용 - 서버, 네트워크 장비 등 높은 초기 투자 필요 - 데이터센터 구축 비용 발생 - 소프트웨어 라이선스 구매 필요 - 초기 투자 비용 최소화 - 필요한 만큼만 시작 가능 - 하드웨어 구매 불필요 운영 비용 - 예측 가능한 고정 비용 - 전담 IT 인력 필요 - 전기, 냉각 등 관리 비용 발생 - 사용량 기반 과금 - 탄력적인 비용 구조 - 운영 인력 최소화 가능 확장성 - 물리적 인프라 확장 필요 - 확장 시 많은 시간과 비용 소요 - 사전 용량 계획 중요 - 필요에 따라 즉시 확장 가능 - 자동 확장/축소 지원 - 글로벌 확장 용이 보안 - 물리적 보안 직접 통제 - 데이터 위치 완벽 통제 - 자체 보안 정책 수립 가능 - 서비스 제공자의 보안 정책 따름 - 공유 인프라 사용 - 데이터 위치 선택 제한적 유지보수 - 모든 유지보수 직접 담당 - 정기적인 하드웨어 교체 필요 - 패치/업그레이드 직접 관리 - 서비스 제공자가 유지보수 담당 - 자동 업데이트/패치 적용 - 최신 기술 자동 적용 커스터마이징 - 완전한 커스터마이징 자유 - 하드웨어/소프트웨어 직접 선택 - 특수 요구사항 수용 용이 - 제한된 커스터마이징 - 제공되는 서비스 내에서 선택 - 표준화된 서비스 위주 가용성 - 자체 인프라로 안정성 확보 - 인터넷 연결 없이도 운영 가능 - 장애 대응 직접 수행 - 서비스 제공자의 SLA 따름 - 인터넷 연결 필수 - 여러 지역 동시 운영 가능 데이터 주권 - 완벽한 데이터 통제권 보유 - 물리적 데이터 위치 확실 - 규제 준수 용이 - 데이터 주권 일부 제한 - 국가간 데이터 이동 가능 - 규제 준수 확인 필요 접근성 - 내부 네트워크 중심 - 원격 접속 별도 구성 필요 - 물리적 접근 통제 가능 - 언제 어디서나 접근 가능 - 다양한 디바이스 지원 - 글로벌 접근성 우수 재해 복구 - 별도의 재해복구 센터 필요 - 높은 구축/운영 비용 - 복구 절차 직접 수행 - 자동화된 백업/복구 - 여러 지역 복제 용이 - 신속한 재해 복구 적합한 상황 - 높은 보안이 필요한 경우 - 특수한 규제 준수 필요 - 레거시 시스템 운영 - 빠른 시작이 필요한 경우 - 유연한 확장성 필요 - 글로벌 서비스 제공 실제로는 많은 기업들이 두 방식의 장점을 모두 활용하는 하이브리드 형태를 채택하고 있다. 기업의 특성, 요구사항, 예산 등을 종합적으로 고려하여 적절한 방식을 선택하는 것이 중요하다. ...

November 10, 2024 · 2 min · Me

Portainer

Portainer란? 컨테이너 환경을 관리하기 위한 오픈소스 웹 기반 GUI 도구 개요 Docker, Kubernetes 등 다양한 컨테이너 플랫폼을 지원하는 범용 컨테이너 관리 솔루션 직관적인 웹 인터페이스를 통해 컨테이너 환경의 복잡성을 단순화 100만 명 이상의 사용자와 30,000개 이상의 GitHub 스타를 보유한 인기 있는 도구 주요 특징과 기능 컨테이너 관리: 컨테이너의 배포, 시작, 중지, 로그 확인 등을 GUI로 수행 스택 배포: Docker Compose를 사용한 멀티 컨테이너 애플리케이션 배포 지원 볼륨 및 네트워크 관리: 데이터 저장소와 네트워크 구성 관리 이미지 관리: Docker 레지스트리 연동 및 이미지 관리 리소스 모니터링: CPU, 메모리 사용량 등 컨테이너 성능 모니터링 템플릿: 미리 정의된 애플리케이션 템플릿을 통한 간편한 배포 장점 사용 편의성: 명령줄 지식 없이도 컨테이너 관리 가능 중앙 집중식 관리: 여러 Docker 환경을 단일 인터페이스에서 관리 보안 강화: 사용자 및 팀 단위의 접근 제어 기능 제공 확장성: 소규모 프로젝트부터 대규모 엔터프라이즈 환경까지 지원 버전 Community Edition (CE): 무료 오픈소스 버전 Business Edition (BE): 기업용 고급 기능(보안, 감사 등) 제공 버전 Portainer 설치 Host간 볼륨 매칭을 위한 디렉토리 생성 1 mkdir -p /kubernetes/portainer_data Portainerdmf docker run 명령어를 통해 docker에 설치 위에서 생성한 폴더와 마운트 1 docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v /kubernetes/portainer_data:/data portainer/portainer-ce:latest Portainer 로그인 웹브라우저 Portainer 서버(예: http://서버IP:9000)에 접근 [처음 접속시] username과 password 입력 Source: hyunyoun ...

November 11, 2024 · 2 min · Me

VMware

VMware 가상화 소프트웨어로, 물리적 컴퓨터에서 여러 가상 머신(VM)을 실행할 수 있게 해주는 도구 회사 및 라이선스: VMware, Inc.에서 개발 대부분 유료 소프트웨어이며, 일부 제품(VMware Workstation Player)만 개인용으로 무료 제공 성능 및 기능: 일반적으로 성능이 우수하며, 최적화된 자원 관리 제공 고급 기능(스냅샷, 클론, 3D 가속, 암호화된 VM 등) 지원 vSphere를 통한 고급 네트워크 기능 제공 호환성: Windows, macOS (Fusion), Linux 등 다양한 호스트 및 게스트 OS 지원 사용자 인터페이스: 직관적이고 사용하기 쉬운 인터페이스 제공 지원: ...

November 11, 2024 · 1 min · Me

Envoy

Envoy Envoy는 Kubernetes 환경에서 널리 사용되는 고성능 프록시 서버. Envoy는 C++로 작성된 고성능 분산 프록시로, 대규모 마이크로서비스 아키텍처를 위해 설계되었다. 주요 특징 다양한 프로토콜 지원: HTTP, TCP, gRPC 등을 지원한다. 고급 로드 밸런싱: 다양한 로드 밸런싱 알고리즘을 제공한다. 동적 구성: 실행 중에 설정을 변경할 수 있는 동적 구성을 지원한다. 관찰 가능성: 상세한 메트릭과 로그를 제공하여 시스템 모니터링을 용이하게 한다. Kubernetes에서의 Envoy 활용 Kubernetes 환경에서 Envoy는 주로 다음과 같은 방식으로 활용된다: ...

November 11, 2024 · 2 min · Me