본문 바로가기

생각 글

26년 5월 7일 생각 글1

5월 7일 수업 기록 — 바이브 코딩으로 키오스크 서버 구축하고 느낀 것들

오늘 수업은 단순한 코딩 실습이 아니었다. 실제 현장에서 어떻게 쓰이는지를 먼저 보여주고, 그걸 직접 구현해보는 방식이었다. 정리해두지 않으면 날아갈 것 같아서 기록한다.


📌 오늘 수업의 핵심 주제
CLI와 GUI, 두 가지 환경

서버를 다루는 방법은 크게 두 가지다.

구분 예시
CLI Command Line Interface
텍스트 명령어로만 조작
오늘 쓴 터미널. sudo lxc launch... 같은 것들
GUI Graphical User Interface
마우스 클릭으로 조작
윈도우 탐색기, 바탕화면 아이콘 클릭
📌 왜 CLI를 배우나?
서버는 대부분 GUI가 없습니다. 라즈베리 파이, 클라우드 서버, 임베디드 장치 모두 CLI로 조작합니다. GUI는 편하지만 무겁고, CLI는 불편하지만 빠르고 정확합니다. 결국 개발자는 CLI에 익숙해져야 합니다.
라즈베리 파이 실습 예정

앞으로 라즈베리 파이(Raspberry Pi)를 가지고 실습할 예정이라고 했다. 오늘 배운 LXD, Docker, Flask 구조를 라즈베리 파이 위에서 그대로 돌리는 것이다.

🍓 라즈베리 파이가 뭔가요?
손바닥 크기의 초소형 리눅스 컴퓨터. 가격은 5~10만원대. 실제 서버처럼 쓸 수 있어서 IoT, 임베디드, 미니 서버 실습에 많이 씁니다. 오늘 배운 것들을 그대로 적용할 수 있습니다.

🖥️ 키오스크가 실제로 어떻게 구성되는가

교수님이 키오스크를 예시로 든 이유가 있다. 우리가 매일 쓰는 카페 키오스크, 편의점 POS 기기가 사실 오늘 만든 구조와 똑같다.

POS 기기 구조 (가맹점 → 본사)
[ 가맹점 키오스크 장치 ] ← 고객이 주문하는 화면 (client)
    │
    ▼
[ 로컬 서버 (Flask) ] ← 주문 받아서 처리
    │
    ▼
[ DB (데이터베이스) ] ← 주문 내역, 매출 저장
    │
    ▼
[ 본사 서버 ] ← 전국 가맹점 매출 통합 관리

휴대폰 장치에서도 이 구조를 그대로 구현할 수 있다. 스마트폰 하나에 서버, 클라이언트, DB를 다 올리는 것도 가능하다는 뜻이다.

오늘 만든 구조
LXD 컨테이너 (가상 서버 환경)
    ├── Server : Flask (app.py) → /menu API 제공
    ├── Client : kiosk.py → 주문 인터페이스 (다음 단계)
    └── DB : 현재 txt → 다음엔 SQLite로 발전
              
전부 Docker 컨테이너로 묶어서 실행
txt → SQLite → MySQL 순서로 DB가 발전합니다. 오늘은 txt(JSON) 단계입니다.

⚡ 바이브 코딩으로 직접 만들어본 소감
바이브 코딩이 뭔가?

AI한테 "이런 거 만들어줘"라고 말하면 코드를 뽑아주는 방식이다. 직접 문법을 다 외우지 않아도 구조와 흐름만 알면 빠르게 만들 수 있다.

✅ 바이브 코딩의 장점
빠르다. 오늘 Flask 서버, Dockerfile, 컨테이너 설정까지 반나절 만에 완성했다. 문법을 몰라도 구조를 이해하면 된다.
하지만 문제도 있었다. 접속 오류, 포트가 닫히는 현상, hostname 오류 등 예상 못한 문제들이 계속 나왔다. AI가 코드를 만들어줘도 오류는 직접 해결해야 한다. 결국 기본기가 있어야 한다.
포트가 닫히는 문제 — 쉘스크립트로 해결

컨테이너가 꺼지거나 포트 연결이 끊기는 문제가 생길 수 있다. 이럴 때 매번 명령어를 하나씩 치는 게 아니라, 쉘스크립트(.sh)로 한 번에 재구동할 수 있다.

restart.sh 예시
#!/bin/bash
# 기존 컨테이너 정리
docker rm -f $(docker ps -aq)

# 다시 실행
docker run -d -p 8080:5000 kiosk-app

echo "서버 재시작 완료"
📌 쉘스크립트란?
터미널 명령어들을 파일 하나에 모아두고 한 번에 실행하는 것. 확장자가 .sh입니다.
bash restart.sh 한 줄만 치면 모든 명령어가 순서대로 실행됩니다.
서버가 날아갔을 때 빠르게 복구할 수 있는 비상 대책입니다.

🧠 결국 암기가 필요하다

교수님이 직접 말했다. 결국은 암기해야 하는 상황이 된다고.

처음엔 이해가 안 됐는데 오늘 실습하면서 알겠다. 명령어를 찾아보면서 치면 느리고, 오타나면 오류 나고, 흐름이 끊긴다. 자연스럽게 손에 붙어야 실전에서 쓸 수 있다.

오늘 써야 했던 명령어들 역할
sudo lxc launch ubuntu:22.04 kiosk-study 컨테이너 생성
sudo lxc exec kiosk-study -- bash 컨테이너 진입
docker build -t kiosk-app . 이미지 빌드
docker run -d -p 8080:5000 kiosk-app 컨테이너 실행
docker rm -f $(docker ps -aq) 컨테이너 강제 삭제
docker logs $(docker ps -q) 실행 로그 확인
처음엔 보고 치고, 다음엔 힌트 보고 치고, 그 다음엔 안 보고 치는 순서로 반복하면 됩니다.

📚 일주일에 책 10권 읽는 사람

수업 중에 교수님이 언급한 이야기다. 개발자들에게 허락되는 휴식은 책을 읽거나 게임하는것이라고 해당 기술관련 서적이나 게임구성 이해를위해 분석하는 등 쉬는 시간에도 개발자들은 무의식적으로 분석하고 공부한다. 일주일에 책을 10권씩 읽는 사람이 있거나 AI를 활용해서 자기개발을 하고 습득한 기술을 동료들에게 직접 설명하고 실현해보인다는 동료도있었다고 한다.

단순히 많이 읽는 게 아니라 AI로 흡수 속도를 높이고, 그걸 직접 써보고 남에게 설명까지 한다는 것.

오늘 내가 한 것도 그 방향과 같다. 배운 걸 그냥 두면 휘발된다. 이렇게 정리해서 올리는 것 자체가 복습이고 내 것으로 만드는 과정이다.

AI를 쓰는 사람과 안 쓰는 사람의 속도 차이가 앞으로 더 벌어질 것이다. 지금 이 방향이 맞다.

🔜 다음 단계 예고
순서 내용 상태
1단계 Flask 서버 + Docker + LXD 환경 구성 ✅ 완료
2단계 kiosk.py 클라이언트 작성 (주문 화면) 🔜 다음
3단계 DB 연동 (txt → SQLite) 🔜 예정
4단계 쉘스크립트 자동 재구동 🔜 예정
5단계 라즈베리 파이에 동일 구조 이식 🔜 예정
📝 오늘 한 줄 요약

바이브 코딩으로 빠르게 만들 수 있지만, 오류를 해결하려면 결국 기본기가 필요하다.
CLI 명령어는 쓰다 보면 몸에 붙는다. 오늘 오타 덕분에 더 확실히 기억됐다.
LXD → Docker → Flask → 브라우저 확인까지, 전체 흐름이 이제 머릿속에 잡혔다.

'생각 글' 카테고리의 다른 글

26년 5월 8일 생각 글  (0) 2026.05.08
26년 5월 7일 생각 글2  (0) 2026.05.07
26년 5월 6일 정리글  (0) 2026.05.06
26년 4월 29일 생각  (0) 2026.04.29
26년 4월 27일 생각  (0) 2026.04.27