[한컴AI 아카데미 | 2026.05.28-29 | Day 59-60] Docker ② - Docker로 구축하는 개발 환경과 운영 환경: Bind Mount와 Image 빌드의 차이
·
부트캠프
이번 실습에서는 단순히 Docker 컨테이너를 실행하는 것을 넘어, 개발(Dev) 환경과 운영(Prod) 환경의 차이를 직접 빌드하고 구성하며 확인해 보았다. 전체적인 실습 흐름은 다음과 같다.Docker Hub → pull → Docker Compose 👉 Flask + MariaDB + Nginx 기본 환경 구성Bind Mount (-v) 적용 👉 Rebuild 없는 코드 반영, 개발 환경 구성Dockerfile Build → Image 기반 실행 👉 Bind Mount 제거, 운영 환경 검증1. Docker Hub → Docker Compose 구성🎯 목표이미 빌드되어 Docker Hub에 업로드된 Image를 Pull 받아 Flask(WAS), MariaDB, Nginx를 각각의 컨테이너로..
[한컴AI 아카데미 | 2026.05.27 | Day 58] Docker ① - Dockerfile 핵심 명령어와 상황별 작성 패턴, 컨테이너 실행 옵션 정리
·
부트캠프
오늘은 처음으로 Docker에 소스코드를 올리고, 빌드를 통해 이미지를 생성한 뒤 컨테이너를 실행하는 흐름을 익혔다. 과정 자체는 어렵지 않았지만, 인프라 환경은 상황과 조건에 따라 구성 방식이 달라질 수 있다는 점을 느꼈다. 그래서 단순히 명령어를 실행하는 것을 넘어, 옵션과 동작 원리를 함께 정리하며 이해하고 넘어가는 것이 중요하겠다는 생각이 들었다.1. Docker도커(Docker)는 애플리케이션을 신속하게 구축, 테스트 및 배포할 수 있도록 지원하는 소프트웨어 컨테이너 플랫폼이다. 무거운 가상 머신(VM)과 달리 호스트 OS의 커널을 공유하여 가볍고 빠르게 독립적인 실행 환경을 제공한다.2. DockerfileDockerfile은 Docker 이미지를 자동으로 생성하기 위해 필요한 모든 명령어와 ..
[한컴AI 아카데미 | 2026.05.26 | Day 57] Git Workflow
·
부트캠프
1. Git 워크플로우(Git Workflow)란?Git 워크플로우는 개발 팀이 코드를 작성하고, 수정하고, 병합(Merge)할 때 따르는 일련의 규칙이자 프로세스이다.정해진 정답은 없으며, 팀의 규모, 프로젝트의 복잡도, 배포 주기 등에 따라 적절한 방식을 선택하여 사용한다.2. 주요 Git 워크플로우 5가지1️⃣ 중앙집중식 워크플로우 (Centralized Workflow)개념: SVN 방식과 유사하게, 하나의 중앙 저장소(단일 main 또는 master 브랜치)만 사용하는 방식이다.특징: 모든 개발자가 별도의 브랜치 없이 main 브랜치에 직접 코드를 커밋하고 푸시(Push)한다.장점: 구조가 매우 단순하여 초보자나 소규모 팀, 단기 프로젝트에 적합하다.단점: 여러 명이 동시에 작업할 때 충돌(Me..
[한컴AI 아카데미 | 2026.05.21 | Day 52] Git 명령어 정리
·
부트캠프
협업 툴과 Git을 제대로 배우기 시작하면서, 그동안 차일피일 미뤄왔던 Git 명령어 정리를 해보고자 한다. 매번 사용할 때마다 구글링하며 작업하다 보니 비효율적이라는 생각이 들었고, 이제는 직접 정리한 가이드를 기반으로 개발을 진행하려 한다. 앞으로 새로운 명령어나 개념이 필요할 때마다 지속적으로 업데이트하며 정리해 나갈 예정이다.🚀 Git 초기 설정 (최초 1회)Git을 설치하고 가장 먼저 해야 하는 일은 컴퓨터에 "이 커밋을 누가 썼는지" 내 정보를 등록하는 것사용자 이름 설정: git config --global user.name "내 이름"사용자 이메일 설정: git config --global user.email "내 이메일"설정 확인하기: git config --list🚀 저장소 시작 및..
[한컴AI 아카데미 | 2026.05.20 | Day 51] Nginx를 활용한 WAS 이중화 및 로드밸런싱 환경 구축
·
부트캠프
1. 개요 및 실습 목적기존 실습에서는 WEB → WAS → DB 구조를 기반으로 단일 WAS 서버를 통해 아키텍쳐를 구성했다. 그러나 이러한 단일 서버 구조는 SPOF(Single Point of Failure, 단일 장애점)를 유발하여, WAS에 문제가 생길 경우 전체 서비스 중단으로 이어진다는 치명적인 한계가 있다.이번 실습에서는 단순한 Flask API 배포를 넘어, WAS 서버를 이중화하고 Nginx의 로드밸런싱(Load Balancing) 기능을 활용하여 고가용성(High Availability)을 보장하는 구조를 구현하는 것을 목표로 했다.또한, 금융을 도메인으로 CRUD가 가능한 서비스(Account & Transaction)를 구축하여 데이터 정합성과 트래픽 흐름을 명확히 검증하고자 했다..
[한컴AI 아카데미 | 2026.05.18-19 | Day 49-50][AWS] Lightsail 기반 WEB-WAS-DB 3-Tier 인프라 배포 및 설정 반영 가이드
·
부트캠프
실습 목표: AWS Lightsail 인스턴스 3개를 활용하여 프론트엔드(WEB), 백엔드 API(WAS), 데이터베이스(DB) 환경을 완전히 분리한 3-Tier 아키텍처 배포 및 안정적인 운영 관리🏗️ 1. 인프라 구축 가이드 (Setup Step-by-Step)🗄️ Step 1. DB (MariaDB) 서버 설정데이터베이스는 외부에서 직접 접근할 수 없도록 차단하고, 배포 후 데이터 스키마를 마이그레이션한다.1. MariaDB 설치 및 상태 확인sudo apt update && sudo apt install mariadb-server -ysudo systemctl status mariadb2. 외부 접속 허용 설정 (bind-address) sudo nano /etc/mysql/mariadb.co..
[한컴AI 아카데미 | 2026.05.17 | Day 48][Code Room] WebSocket 기반 실시간 코드 공유 서비스 개발기 (2) - 개선 및 배포
·
부트캠프
1. 새로고침 시 코드 초기화 문제 해결🚨 문제 상황초기 버전에서는 강사가 코드를 열심히 작성하다가도 실수로 새로고침을 하면 에디터의 코드가 모두 유실되는 문제가 있었다. 이는 뒤늦게 입장한 학생 역시 기존에 진행되던 수업 내용을 볼 수 없고 만일의 경우 네트워크 문제가 생겼을 때 화면이 새로고침 되면 빈 화면만 렌더링되었다. 실시간 동기화는 잘 동작했지만, 실제 수업 환경에서 쓰기에는 사용성이 부족했다.[사용자 새로고침] ──> [소켓 연결 끊김] ──> [에디터 초기화 (기존 코드 유실)]💡 개선 방향 및 구현새로 접속하거나 페이지를 새로고침한 사용자도 가장 최근의 코드 상태를 그대로 이어서 볼 수 있도록 상태 유지(Persistence) 구조를 도입했다.[강사 코드 입력] ──> [DB에 실시간..
[한컴AI 아카데미 | 2026.05.16 | Day 47][Code Room] WebSocket 기반 실시간 코드 공유 서비스 개발기 (1) - 핵심 기능 구현
·
부트캠프
1. 프로젝트 소개최근 일주일 동안 Linux 환경에서 프런트엔드, 백엔드, 데이터베이스 서버를 각각 구축하고, Nginx를 활용해 서버 아키텍처를 설계하는 실습을 반복적으로 진행했다. 실습을 마친 후, 학습한 내용을 단순 정리로 끝내기보다 직접 서비스를 만들며 복습해 보면 좋겠다는 생각이 들었다. 특히 평소에 꼭 사용해보고 싶었던 WebSocket 기반의 실시간 통신 구조를 프로젝트에 녹여내고 싶었다. 실시간성을 극대화할 수 있는 아이디어를 고민하던 중, 수업 중 겪었던 불편함이 떠올랐다. 수업 시간에 실행되는 코드들을 Discord를 통해 공유하곤 했는데, 코드 블록을 사용하더라도 일부 특수문자나 포맷팅(Formatting)이 의도와 다르게 깨져 복사가 제대로 되지 않는 경우가 있었다.강사님의 코드..