Archive for Samuel : Samuel 의 기록 보관소
완성된 도커 환경을 실제 서버에 올리고, 문제가 생겼을 때 원인을 파악하는 것은 실제 서비스 운영의 핵심입니다. C# 기반의 자재 관리 시스템이나 라즈베리파이 원격 모터 제어 환경을 외부 우분투(Ubuntu) 서버나 클라우드로 배포한다고 가정하고 전체적인 흐름을 설명해 드리겠습니다.1. 도커 환경을 실제 서버에 배포하는 과정도커로 만든 환경을 다른 장비로 넘기는 방법은 크게 두 가지가 있습니다. 상황에 맞게 선택하시면 됩니다.방법 A: 도커 허브(Registry)를 이용한 배포 (가장 표준적인 방법)스마트폰의 '앱 스토어'에 앱을 올리고, 다른 폰에서 다운받아 설치하는 것과 완벽히 같은 원리입니다.내 PC에서 이미지 굽기 (Build): 내 컴퓨터에서 docker-compose build 명령어를 통해 ..
C# 애플리케이션을 도커 환경으로 감싸는 방법과, 데이터베이스의 생명줄인 볼륨(Volume)에 대한 내용입니다.1. C# 앱을 포장하는 설명서: Dockerfile의 내부 구조앞서 docker-compose.yml 파일에서 build: . 옵션을 주면, 도커는 해당 폴더에 있는 Dockerfile이라는 텍스트 문서를 읽어들여 C# 서버용 이미지를 직접 만들어냅니다.C# (.NET) 애플리케이션을 도커로 만들 때는 보통 '멀티 스테이지 빌드(Multi-stage build)'라는 아주 효율적인 방식을 사용합니다. 개발 및 빌드용 무거운 환경과, 실제 실행에 필요한 가벼운 환경을 분리하는 기법입니다.자재 관리 백엔드 서버를 위한 표준적인 Dockerfile 구조는 다음과 같습니다. # [Stage 1: 빌드..
도커 컨테이너를 나눌 때 가장 중요한 대원칙은 '하나의 컨테이너에는 하나의 핵심 프로세스(역할)만 담는다'는 것입니다. 통째로 하나의 거대한 서버를 만드는 것이 아니라, 레고 블록처럼 쪼개서 조립하는 방식(Microservices Architecture)을 지향합니다. SCM(공급망 관리) 시스템과 라즈베리파이를 활용한 원격 제어 환경을 구축할 때 컨테이너를 어떻게 나누는지 구체적인 구조를 살펴보겠습니다.1. 엔터프라이즈 시스템 컨테이너 구조 (C# + Oracle SCM)데이터베이스 연동이 필수적인 소프트웨어 시스템의 경우, 보통 최소 2~3개의 컨테이너로 역할을 철저히 분리합니다.컨테이너 A (백엔드 애플리케이션): * 역할: 비즈니스 로직 처리 및 클라이언트 API 제공내용물: C# (.NET) 실..
도커(Docker)의 작동 원리를 이해하는 데는 항구에서 쓰는 '화물 컨테이너(Shipping Container)'를 떠올리는 것이 가장 정확합니다. 기계나 물류 시스템에서 표준화가 얼마나 큰 혁신을 가져오는지 생각해보시면 이해가 빠릅니다.과거에는 수박, 옷, TV 등 화물의 모양과 크기가 달라서 배에 싣는 방법이 매번 달랐습니다. 하지만 규격화된 '철제 컨테이너'가 등장하면서, 안에 무엇이 들었든 상관없이 크레인으로 들어서 배나 트럭에 싣기만 하면 되게 바뀌었죠.도커는 이 물리적인 물류 혁신을 소프트웨어와 서버 환경에 그대로 가져온 기술입니다.1. 가상머신(VM)과의 결정적 차이: 커널 공유기존에 환경을 통째로 옮기기 위해 쓰던 방식은 VMWare나 VirtualBox 같은 '가상머신(VM)'이었습니다..