13년차의 서버실

서버, 인프라, 홈랩 기술 블로그

[태그:] 라즈베리파이

  • [k8s] K3s/MicroK8s로 구축하는 경량 엣지 쿠버네티스: 실제 운영 사례 분석

    [k8s] K3s/MicroK8s로 구축하는 경량 엣지 쿠버네티스: 실제 운영 사례 분석

    안녕하세요, 13년차 서버실 지킴이입니다. 오늘도 제 홈랩 서버에서 굴러가는 작은 친구들 이야기를 좀 해볼까 합니다. 요즘 엣지 컴퓨팅(Edge Computing)에 대한 관심이 정말 뜨거우니까요? 클라우드의 강점을 작은 엣지 디바이스까지 끌어내려는 움직임이 활발합니다. 그런데 막상 작은 디바이스에 쿠버네티스(Kubernetes)를 올리려고 하면, 덩치 큰 녀석이라 부담스러울 때가 많았거든요.

    저도 처음엔 라즈베리 파이(Raspberry Pi) 같은 작은 보드 컴퓨터에 풀 스택 쿠버네티스를 올려보려다가 리소스 부족으로 꽤나 삽질을 했어요. 😅 그러다 발견한 보석 같은 친구들이 바로 K3s와 MicroK8s거든요. 이 경량 쿠버네티스 배포판들이 엣지 환경에서 얼마나 쓸모 있게 쓰일 수 있는지, 그리고 제가 직접 운영하면서 겪었던 경험담들을 공유해볼까 합니다. 저처럼 작은 디바이스에서 쿠버네티스를 돌려보고 싶으셨던 분들이라면 오늘 글이 좋은 가이드가 될 거예요!

    엣지 컴퓨팅 환경에서 경량 쿠버네티스 클러스터가 어떻게 구성되는지 보여주는 아키텍처 다이어그램

    이미지: 엣지 환경에서 경량 쿠버네티스 클러스터가 어떻게 구성되는지 보여주는 아키텍처 다이어그램입니다.

    K3s와 MicroK8s, 뭐가 다를까? (개념 설명 및 비교)

    경량 쿠버네티스라는 카테고리 안에 K3s와 MicroK8s가 대표주자인데, 이 둘은 각각 다른 접근 방식으로 ‘가벼움’을 추구해요. 핵심부터 쉽게 설명해 드릴게요.

    K3s: Rancher Labs의 선택

    K3s는 Rancher Labs에서 만든 경량 쿠버네티스 배포판이에요. ‘K8s’에서 숫자 8을 3으로 바꾼 건, 일반적인 쿠버네티스보다 절반도 안 되는 리소스로 동작한다는 의미를 담고 있더라고요. 💡 K3s의 가장 큰 특징은 단일 바이너리(Single Binary) 형태로 배포된다는 점이에요. 모든 핵심 컴포넌트(kube-apiserver, kube-controller-manager 등)가 하나의 파일에 쏙 들어있어서 설치가 정말 간편합니다. 게다가 SQLite를 기본 데이터베이스로 써서 외부 DB(데이터베이스) 없이도 잘 동작하거든요. 엣지 환경처럼 리소스가 제한적이거나 네트워크 연결이 불안정한 곳에 정말 안성맞춤이죠.

    MicroK8s: Canonical의 유연성

    MicroK8s는 Canonical(우분투를 만드는 회사)에서 만든 경량 쿠버네티스예요. K3s만큼 설치가 간단한 건 맞는데, 애드온(Add-ons) 시스템이 정말 강점이거든요. Ingress(인그레스, 외부 트래픽 진입점), DNS, Storage(스토리지) 같은 필수 기능들을 필요할 때마다 쉽게 켜고 끄는 식으로 활성화할 수 있어요. 스냅(Snap) 패키지로 배포되기 때문에 우분투(Ubuntu) 환경에서 특히 설치와 관리가 편리합니다. 저는 홈랩에서 우분투를 주로 쓰는데, MicroK8s는 정말 친숙하게 느껴지더라고요.

    간단한 비교 표

    두 솔루션의 특징을 한눈에 보기 위해 표로 정리해봤어요.

    특징 K3s MicroK8s
    개발사 Rancher Labs Canonical
    설치 방식 단일 바이너리, 스크립트 Snap 패키지
    데이터베이스 SQLite (기본), PostgreSQL, MySQL 등 etcd
    장점 극강의 경량성, 빠른 설치, 단일 파일 모듈식 애드온, 스냅 자동 업데이트, 고가용성 용이
    적합 환경 초소형 엣지, IoT, CI/CD 개발/테스트, 데스크톱, 엣지

    경량 쿠버네티스 설치, 어디서부터 시작할까? (실전 구현)

    이제 직접 설치해보는 과정을 보여드릴게요. 저는 주로 라즈베리 파이나 집에 굴러다니는 미니 PC에 설치해서 쓰고 있거든요. 여기서는 범용적으로 사용할 수 있는 K3s 설치 예시를 들어볼 텐데, MicroK8s도 과정이 비슷하게 간단합니다.

    K3s 설치 예시

    제가 실제로 경험해본 K3s는 정말 😎 쉽습니다. 단 한 줄의 명령어로 서버(Master)와 에이전트(Agent)를 세팅할 수 있거든요.

    1. 서버 노드(Master) 설치

    먼저 클러스터의 컨트롤 플레인(Control Plane) 역할을 할 서버 노드를 깔아봅시다. 보통 가장 먼저 설치하고, 이 노드가 나머지 에이전트 노드들을 관리하게 되거든요. 다음 명령어를 실행하면 K3s가 알아서 설치되고 시작돼요.

    curl -sfL https://get.k3s.io | sh -
    

    설치가 끝나면 kubectl 명령어를 바로 사용할 수 있게 돼요. 잘 설치됐는지 확인해볼까요?

    sudo k3s kubectl get nodes
    

    자신의 서버 노드가 Ready 상태로 보일 텐데, 이때 느끼는 쾌감은 정말 🎉 입니다.

    2. 에이전트 노드(Agent) 추가

    이제 클러스터에 워커 노드를 추가할 차례예요. 다른 라즈베리 파이나 미니 PC에 접속해서 다음 명령어를 실행하면 되는데, 여기서 중요한 게 K3S_URL과 K3S_TOKEN입니다.

    • K3S_URL: 서버 노드의 IP 주소를 지정합니다.
    • K3S_TOKEN: 서버 노드에서 생성된 토큰이에요. 이 토큰은 /var/lib/rancher/k3s/server/node-token 파일에서 확인할 수 있습니다.
    # 서버 노드에서 토큰 확인
    sudo cat /var/lib/rancher/k3s/server/node-token
    
    # 에이전트 노드에서 설치 (TOKEN과 SERVER_IP는 자신의 환경에 맞게 변경)
    curl -sfL https://get.k3s.io | K3S_URL="https://YOUR_SERVER_IP:6443" K3S_TOKEN="K10xxxxxxxxxxxxxxxxxxxx" sh -
    

    모든 에이전트 노드에 이 과정을 반복하면 되는데, 몇 분이 지난 후 서버 노드에서 다시 sudo k3s kubectl get nodes를 실행해보면 새로 추가된 노드들이 보일 거예요. 정말 신기하지 않나요? 😁

    K3s 클러스터에 연결된 노드들의 상태를 보여주는 터미널 화면

    이미지: K3s 클러스터에 연결된 노드들의 상태를 보여주는 터미널 화면입니다.

    홈랩에서 겪은 삽질 경험과 해결책 (주의사항/트러블슈팅)

    13년차 엔지니어라고 해서 삽질을 안 하는 건 아닙니다. 오히려 더 많이 해요. 😅 특히 엣지 환경에서는 예상치 못한 변수들이 많아서 몇 번은 머리를 쥐어뜯었거든요. 제가 직접 겪었던 몇 가지 문제와 그 해결책을 공유해볼게요.

    ⚠️ 1. 네트워크 문제: 노드 간 통신 장애

    정말 흔한 문제예요. 처음엔 분명 잘 연결된 것 같았는데, 어느 순간 노드(Node)들이 NotReady 상태로 바뀌는 경우가 있더라고요. 대부분 방화벽(Firewall)이나 네트워크 설정 때문이었습니다. 특히 라즈베리 파이 같은 작은 디바이스들은 무선 LAN(랜)을 많이 쓰는데, 공유기 설정 때문에 서로 통신이 안 되는 경우도 있었어요.

    • 해결책:
    • 방화벽 확인: ufw나 firewalld 같은 방화벽이 6443 포트(Port)나 다른 쿠버네티스 관련 포트를 막고 있지 않은지 확인하고 열어줍니다.
    • IP 주소 고정: DHCP(동적 호스트 구성 프로토콜)로 IP가 자꾸 바뀌면 노드 통신이 끊기기도 해요. 각 노드의 IP 주소를 고정(Static IP)으로 설정하는 게 좋습니다.
    • Cilium/Flannel 로그 확인: CNI(Container Network Interface) 플러그인(Plug-in)인 Cilium이나 Flannel 로그를 확인하면 네트워크 문제를 진단하는 데 정말 큰 도움이 돼요.

    ⚠️ 2. 리소스 제한: 메모리/CPU 부족

    라즈베리 파이 3B+나 4B 모델에 1GB, 2GB 램(RAM)을 가진 노드들을 운영하다 보면 파드(Pod) 몇 개만 돌려도 메모리가 부족하다고 아우성칠 때가 많아요. 특히 메트릭 서버(Metrics Server)나 모니터링 툴(Monitoring Tool)까지 올리면 순식간에 리소스가 바닥나더라고요.

    • 해결책:
    • 오버프로비저닝 금지: 😭 욕심부리지 마세요! 필요한 파드만 최소한으로 배포합니다.
    • 리소스 요청/제한 설정: 디플로이먼트(Deployment) YAML 파일에 resources.requests와 resources.limits를 명확하게 설정해서 파드가 필요한 만큼만 쓰도록 제한하는 거예요.
    • 스왑(Swap) 공간 활용: 성능 저하를 감수하고라도 메모리가 정말 부족하다면 스왑 공간을 활성화하는 것도 한 방법입니다. 하지만 이건 최후의 수단으로 생각하세요.

    ⚠️ 3. SD 카드 수명 문제

    라즈베리 파이에서 SD 카드를 부팅 디스크로 쓸 때, 쿠버네티스는 로그(Log)나 데이터베이스 쓰기 작업이 정말 많아서 SD 카드 수명이 급격히 줄어들 수 있어요. 실제로 저도 몇 번 SD 카드가 사망하는 경험을 했습니다. 💀

    • 해결책:
    • USB SSD 사용: 가능하면 USB 외장 SSD(솔리드 스테이트 드라이브)를 부팅 디스크로 쓰는 게 정말 좋아요. 훨씬 빠르고 안정적이며 수명도 길거든요.
    • 로그 회전(Log Rotation) 설정: 로그 파일이 너무 커지지 않도록 logrotate를 설정해서 관리하는 게 중요합니다.

    성능 모니터링 및 리소스 관리 팁 (추가적인 팁)

    경량 쿠버네티스라고 해서 모니터링을 소홀히 하면 안 돼요. 오히려 작은 시스템일수록 더욱 꼼꼼하게 지켜봐야 합니다. 제가 실제로 쓰는 몇 가지 팁을 알려드릴게요.

    1. Prometheus/Grafana로 시각화

    작은 규모의 클러스터라도 프로메테우스(Prometheus)와 그라파나(Grafana)는 거의 필수라고 생각해요. 노드의 CPU(중앙 처리 장치), 메모리(Memory) 사용량, 네트워크 트래픽(Traffic) 등을 실시간으로 시각화해서 볼 수 있거든요. K3s나 MicroK8s 모두 Prometheus를 쉽게 설치할 수 있는 방법을 제공합니다.

    # MicroK8s의 경우
    microk8s enable prometheus
    
    # K3s의 경우, Helm 차트(Chart)로 설치
    helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
    helm repo update
    helm install prometheus prometheus-community/kube-prometheus-stack
    

    저는 Grafana 대시보드를 띄워놓고 커피 마시면서 클러스터 상태를 확인하는 게 소소한 낙이에요. 😄

    2. 리소스 쿼터(Resource Quotas) 설정

    여러 애플리케이션(Application)을 배포할 때, 특정 네임스페이스(Namespace)나 파드가 너무 많은 리소스를 독점하지 않도록 리소스 쿼터를 설정하는 게 중요해요. 특히 홈랩처럼 리소스가 제한적인 환경에서는 더욱 그렇거든요.

    # resource-quota.yaml
    apiVersion: v1
    kind: ResourceQuota
    metadata:
      name: pod-quota
    spec:
      hard:
        pods: "10"
        requests.cpu: "1"
        requests.memory: "1Gi"
        limits.cpu: "2"
        limits.memory: "2Gi"
    
    kubectl apply -f resource-quota.yaml -n my-namespace
    

    이렇게 하면 my-namespace 안에서는 최대 10개의 파드만 생성할 수 있고, CPU와 메모리도 지정된 범위 내에서만 쓸 수 있게 된답니다. 💸

    Grafana 대시보드에서 경량 쿠버네티스 클러스터의 실시간 리소스 사용량을 모니터링하는 모습

    이미지: Grafana 대시보드에서 경량 쿠버네티스 클러스터의 실시간 리소스 사용량을 모니터링하는 모습입니다.

    실제 운영 사례와 얻은 교훈 (검증/결과)

    저는 홈랩에서 K3s 클러스터를 여러 대 운영하고 있어요. 주로 하는 일들을 정리해보면 다음과 같습니다.

    • 개인 웹사이트/블로그 호스팅: Nginx Ingress Controller(엔진엑스 인그레스 컨트롤러)와 Cert-Manager(서트 매니저)를 활용해서 Let’s Encrypt(렛츠 인크립트) SSL(보안 소켓 계층) 인증서를 자동으로 발급받아 제 블로그를 안전하게 운영하고 있어요.
    • IoT 데이터 수집 및 처리: 여러 센서(Sensor)에서 들어오는 데이터를 Kafka(카프카)로 수집하고, Go(고) 언어로 작성된 경량 워커(Worker) 파드에서 데이터를 처리한 후 InfluxDB(인플럭스디비)에 저장하는 파이프라인(Pipeline)을 구축했어요.
    • CI/CD 테스트 환경: 작은 규모의 개발 프로젝트를 할 때, 젠킨스(Jenkins)나 아르고 CD(Argo CD)를 K3s 클러스터에 배포해서 CI/CD(지속적 통합/지속적 배포) 파이프라인 테스트 환경으로 활용하고 있습니다.

    이런 실제 운영 사례들을 통해 얻은 가장 큰 교훈은, ‘작은 것이 아름답다’는 거예요. 😊 복잡하고 무거운 쿠버네티스 기능을 모두 필요로 하지 않는 엣지 환경에서는 K3s나 MicroK8s처럼 핵심 기능에만 집중하고 가볍게 동작하는 솔루션이 훨씬 더 효율적이더라고요.

    물론, 완전한 프로덕션(Production) 환경에서 엔터프라이즈(Enterprise)급 요구사항을 만족시키기에는 제약이 있을 수 있어요. 하지만 소규모 팀, 홈랩, IoT 디바이스, 임베디드(Embedded) 시스템 같은 곳에서는 정말 ‘게임 체인저(Game Changer)’라고 할 수 있죠. 경량 쿠버네티스 덕분에 엣지 컴퓨팅의 문턱이 훨씬 낮아졌다고 저는 생각합니다.

    경량 쿠버네티스의 주요 장점과 고려해야 할 한계점을 시각적으로 요약한 인포그래픽

    이미지: 경량 쿠버네티스의 주요 장점과 고려해야 할 한계점을 시각적으로 요약한 인포그래픽입니다.

    마무리: 엣지 쿠버네티스의 미래와 다음 단계

    오늘은 K3s와 MicroK8s를 중심으로 경량 엣지 쿠버네티스를 구축하고 운영했던 제 경험을 공유해드렸어요. 처음엔 단순히 ‘작은 쿠버네티스’ 정도로 생각했는데, 직접 써보니까 엣지 환경에 특화된 기능과 철학이 담겨 있더라고요. 설치는 쉽고 리소스 소모는 적어서, 저처럼 홈랩을 꾸리거나 소규모 엣지 프로젝트를 진행하는 분들께는 정말 강력 추천하고 싶은 솔루션입니다. 💪

    물론, 모든 기술이 그렇듯 장점만 있는 건 아니에요. 풀 스택 쿠버네티스가 제공하는 모든 기능을 기대하기보다는, 자신의 환경과 필요한 기능에 맞춰 현명하게 선택하고 활용하는 지혜가 필요합니다. 하지만 ‘경량’이라는 이름표를 달고 엣지 컴퓨팅의 중요한 축으로 자리 잡은 K3s와 MicroK8s의 미래는 앞으로도 계속 밝을 거라고 확신해요.

    다음번에는 이 경량 쿠버네티스 클러스터 위에 GitOps(깃옵스) 환경을 구축해서 애플리케이션 배포를 자동화하는 방법에 대해 다뤄볼까 합니다. 기대해주세요! 혹시 K3s나 MicroK8s를 사용하면서 겪었던 재미있는 경험이나 삽질 스토리가 있다면 댓글로 공유해주세요. 저도 배우는 게 많을 것 같습니다. 😊

  • [홈랩 가이드] 라즈베리 파이 5에 Home Assistant 설치 및 최적화 가이드

    [홈랩 가이드] 라즈베리 파이 5에 Home Assistant 설치 및 최적화 가이드

    [홈랩 가이드] 라즈베리 파이 5에 Home Assistant 설치 및 최적화 가이드

    안녕하세요, 13년차의 서버실 주인장입니다. 제가 서버실에서 굴러 먹은 지 어연 13년, 이제는 집에서도 서버를 굴리는(?) 홈랩(Home Lab) 엔지니어가 되어버렸네요. 요즘 스마트홈에 대한 관심이 뜨거운데, 상용 허브들은 뭔가 답답하고 내 맘대로 안 되는 경우가 많았어요. 저처럼 직접 스마트홈을 구축하고 자동화의 재미를 느껴보고 싶은 분들이 많으실 거라 생각합니다. 그래서 오늘은 라즈베리 파이 5에 Home Assistant를 설치하고 최적화하는 과정을 제 경험을 바탕으로 솔직하게 풀어보려고 합니다. 이 조합, 제가 직접 써보니 정말 강력하더라고요!

    스마트홈 허브로서 라즈베리 파이 5와 Home Assistant의 전체적인 아키텍처입니다.

    1. 왜 라즈베리 파이 5와 Home Assistant 조합일까요?

    제가 수많은 삽질 끝에 이 조합을 추천하는 데는 명확한 이유가 있습니다. 바로 강력한 성능과 무한한 확장성, 그리고 뛰어난 전성비 때문이죠.

    • Home Assistant (HA, 홈 어시스턴트): 쉽게 말해 여러분의 모든 스마트 기기를 한곳에 모아 관리하고 자동화할 수 있게 해주는 오픈소스 스마트홈 플랫폼입니다. 특정 제조사에 종속되지 않고, 수많은 통합(Integrations)을 통해 다양한 기기들을 연결할 수 있다는 게 가장 큰 장점이에요. 그리고 무엇보다 중요한 건, 모든 데이터가 로컬(Local)에서 처리되기 때문에 프라이버시 걱정이 덜하고, 인터넷 연결 없이도 스마트홈이 동작한다는 점입니다. 이 부분이 저 같은 인프라 엔지니어에게는 정말 매력적이었어요.

    • 라즈베리 파이 5 (Raspberry Pi 5, RPi5): 이 작은 보드 컴퓨터는 그야말로 홈랩의 게임 체인저입니다. 이전 세대 라즈베리 파이 4에 비해 CPU 성능은 2~3배, GPU 성능은 2배 이상 향상되었고, 무엇보다 PCIe 2.0 인터페이스가 추가되어 NVMe SSD를 고속으로 연결할 수 있게 되었어요. 이는 Home Assistant처럼 I/O(입출력) 작업이 많은 시스템에 엄청난 이점이거든요. 안정성과 반응 속도가 확 달라지는 걸 체감할 수 있습니다. 전력 효율도 좋아서 24/7(24시간 7일) 구동하는 스마트홈 허브로 안성맞춤이고요.

    이 둘의 조합은 마치 작은 슈퍼컴퓨터로 나만의 스마트홈을 구축하는 것과 같아요. 저는 이 조합으로 조명, 에어컨, 공기청정기, 로봇청소기 등 다양한 기기들을 연동해서 사용하고 있는데, 정말 편하더라고요.

    2. 설치 준비물: 시작하기 전에 챙겨야 할 것들

    설치를 시작하기 전에 몇 가지 준비물이 필요해요. 미리미리 챙겨두면 삽질을 줄일 수 있습니다. (제가 그랬거든요…)

    1. 라즈베리 파이 5 본체: 4GB 또는 8GB RAM 모델을 추천합니다. Home Assistant는 생각보다 리소스를 꽤 먹는 편이라 여유 있는 게 좋아요.

    2. 공식 27W USB-C PD 전원 어댑터 (5V 5A): ⚠️ 이거 정말 중요합니다! 라즈베리 파이 5는 이전 모델보다 훨씬 많은 전력을 필요로 합니다. 일반 스마트폰 충전기나 저용량 어댑터를 사용하면 부팅조차 안 되거나, 불안정하게 동작하다가 멈춰버리는 불상사가 생길 수 있어요. 제가 처음엔 집에 굴러다니는 USB-C 충전기를 썼다가 무한 재부팅 지옥을 경험했습니다… 꼭 공식 어댑터를 구매하세요.

    3. MicroSD 카드 (최소 32GB, Class 10 이상): OS 설치용입니다. 하지만 장기적으로는 NVMe SSD 사용을 강력히 권장합니다. MicroSD 카드는 쓰기/읽기 수명이 짧아 Home Assistant처럼 잦은 데이터 기록이 있는 시스템에서는 금방 고장 날 수 있거든요.

    4. NVMe SSD 및 케이스/HAT: 라즈베리 파이 5의 PCIe 인터페이스를 활용하기 위한 필수품입니다. USB 방식의 외장 SSD보다 훨씬 빠르고 안정적이에요. 저는 PCIe to NVMe HAT을 사용하고 있습니다.

    5. 이더넷 케이블 (LAN 케이블): 초기 설정 시 안정적인 네트워크 연결을 위해 유선 연결을 추천합니다.

    6. PC 또는 노트북: Home Assistant OS 이미지를 MicroSD 카드나 NVMe SSD에 구울 때 필요합니다.

    3. 단계별 설치 가이드: 라즈베리 파이 5에 Home Assistant OS 올리기

    이제 본격적으로 설치를 시작해볼까요? 가장 쉬운 방법인 Home Assistant OS를 설치하는 방법을 알려드릴게요. Raspberry Pi Imager를 사용하면 아주 간단합니다.

    3.1. Raspberry Pi Imager 다운로드 및 실행

    먼저 Raspberry Pi 공식 홈페이지에서 Raspberry Pi Imager를 다운로드하여 설치해주세요. 윈도우, macOS, 리눅스 모두 지원합니다.

    3.2. Home Assistant OS 이미지 선택

    1. Imager를 실행합니다.
    2. ‘CHOOSE OS’ (운영체제 선택) 버튼을 클릭합니다.
    3. ‘Other specific-purpose OS’ (다른 특정 목적 운영체제) 선택 > ‘Home Assistant and home automation’ (Home Assistant 및 홈 자동화) 선택 > ‘Home Assistant’를 선택합니다.
    4. 다음 화면에서 ‘Home Assistant OS for Raspberry Pi 5 (64-bit)’를 선택합니다.

    3.3. 저장 장치 선택

    1. ‘CHOOSE STORAGE’ (저장 장치 선택) 버튼을 클릭합니다.
    2. MicroSD 카드 리더에 삽입한 MicroSD 카드 또는 NVMe SSD를 선택합니다. (USB-C to NVMe 인클로저를 사용한다면 해당 장치를 선택하면 돼요.)

    3.4. 고급 옵션 설정 (선택 사항이지만 추천!)

    톱니바퀴 아이콘을 클릭하여 고급 옵션을 설정할 수 있습니다. 저는 항상 이렇게 설정하는 편입니다.

    • SSH 활성화 (Enable SSH): 문제 발생 시 원격 접속하여 디버깅할 수 있도록 활성화해두세요. 사용자 이름은 <code>homeassistant, 비밀번호는 본인이 원하는 것으로 설정합니다.
    • 무선 LAN 설정 (Configure wireless LAN): Wi-Fi를 사용할 경우 미리 설정해두면 편리해요. (초기에는 유선 LAN을 추천하지만, 나중에 Wi-Fi로 전환할 때 유용합니다.)
    • 호스트 이름 설정 (Set hostname): homeassistant 등으로 설정해두면 네트워크에서 쉽게 찾을 수 있습니다.
    Raspberry Pi Imager에서 라즈베리 파이 5용 Home Assistant OS를 선택하고 설정하는 화면

    Raspberry Pi Imager를 이용해 Home Assistant OS를 선택하고 초기 설정을 진행하는 모습입니다.

    3.5. 이미지 굽기 및 부팅

    1. 모든 설정을 마쳤다면 ‘WRITE’ (쓰기) 버튼을 클릭하여 이미지를 굽습니다. 이 과정은 몇 분 정도 소요돼요.
    2. 이미지 굽기가 완료되면 MicroSD 카드 또는 NVMe SSD를 라즈베리 파이 5에 삽입하고, 이더넷 케이블과 전원 어댑터를 연결한 후 전원을 켭니다.
    3. 처음 부팅 시 Home Assistant OS가 필요한 파일들을 다운로드하고 설치하는 과정이 진행돼요. 이 과정은 네트워크 환경과 저장 장치 속도에 따라 5분에서 20분 정도 걸릴 수 있습니다.

    4. 초기 설정 및 필수 최적화: 더 빠르고 안정적인 스마트홈을 위해

    성공적으로 부팅되었다면 이제 웹 브라우저를 통해 Home Assistant에 접속할 수 있어요. 보통 http://homeassistant.local:8123 또는 라즈베리 파이 5의 IP 주소로 접속하면 됩니다. IP 주소를 모른다면 공유기 관리 페이지에서 확인하거나, 네트워크 스캐너 앱(예: Fing)을 사용해보세요.

    4.1. Home Assistant 초기 설정

    1. 웹 브라우저로 접속하면 환영 화면이 나타나요. 관리자 계정 이름과 비밀번호를 설정합니다.
    2. 집 이름, 위치, 시간대 등을 설정합니다.
    3. 자동으로 검색된 통합(Integrations)이 있다면 설정 마법사를 따라 진행합니다.
    4. 모든 설정을 마치면 Home Assistant 대시보드(Dashboard)가 나타나요. 🎉 드디어 여러분의 스마트홈 허브가 완성된 겁니다!

    4.2. NVMe SSD로 부팅 최적화 (선택 사항이지만 강력 추천!)

    MicroSD 카드로 설치했다면, 안정성과 속도를 위해 NVMe SSD로 부팅하는 것을 고려해보세요. 라즈베리 파이 5는 PCIe 2.0을 지원하므로 NVMe SSD의 성능을 제대로 활용할 수 있어요. 이 과정은 Home Assistant OS 내에서 직접 마이그레이션 기능을 사용하거나, Raspberry Pi Imager로 NVMe에 직접 OS를 굽는 방식으로 진행할 수 있습니다. 자세한 방법은 다음 기회에 별도 글로 다뤄볼 예정입니다.

    💡 팁: NVMe SSD를 사용하면 부팅 시간 단축은 물론, Home Assistant의 반응 속도가 눈에 띄게 빨라져요. 로그 기록이나 애드온(Add-on) 설치 등 디스크 I/O가 많은 작업에서 특히 체감이 커요.

    4.3. 백업 전략 수립

    스마트홈 설정은 소중하니까요. ‘Supervisor’ > ‘Add-on Store’에서 ‘Google Drive Backup’과 같은 애드온을 설치하여 정기적으로 백업하는 것을 강력히 추천합니다. 제가 한번 설정을 날려먹고 밤새 복구하느라 삽질 좀 했습니다… ㅎㅎ

    4.4. Zigbee/Z-Wave 동글 연결

    만약 Zigbee나 Z-Wave 기반의 스마트 기기들을 사용한다면, USB 동글(예: ConBee II, Aeotec Z-Stick)을 라즈베리 파이 5에 연결해야 해요. Home Assistant는 이 동글들을 자동으로 인식하고 통합을 설정할 수 있도록 도와줄 거예요.

    설치 완료 후 Home Assistant 대시보드에서 스마트 기기를 제어하는 화면

    설치 및 최적화가 완료된 Home Assistant 대시보드에서 스마트홈 기기들을 제어하는 화면입니다.

    5. ⚠️ 삽질 경험 공유: 제가 겪었던 문제와 해결책

    13년차 엔지니어인 저도 새로운 시스템을 만질 때마다 삽질의 연속입니다. 여러분은 저와 같은 경험을 하지 않기를 바라며, 제가 겪었던 몇 가지 문제점과 해결책을 공유해볼게요.

    • 문제 1: 라즈베리 파이 5가 자꾸 재부팅되거나 부팅이 안 돼요!
      해결책: 전원 어댑터를 확인하세요. 위에서 강조했듯이, 라즈베리 파이 5는 공식 27W USB-C PD 전원 어댑터 (5V 5A)가 필수적입니다. 저도 처음엔 집에 있던 5V 3A짜리 어댑터를 썼다가 계속 재부팅되는 현상을 겪었거든요. 특히 USB 장치를 많이 연결할수록 더 많은 전력이 필요하니, 꼭 정품 어댑터를 사용하시길 바랍니다.

    • 문제 2: MicroSD 카드가 금방 망가져요.
      해결책: NVMe SSD로 전환하세요. Home Assistant는 잦은 로그 기록과 상태 변경 데이터를 MicroSD 카드에 저장해요. 일반 MicroSD 카드는 이처럼 잦은 쓰기 작업에 취약하여 수명이 짧습니다. 저도 여러 번 MicroSD 카드를 교체하다가 결국 NVMe SSD로 갈아탔어요. NVMe는 속도도 빠르고 내구성도 훨씬 좋아서 장기적으로 안정적인 운영에 필수라고 생각합니다.

    • 문제 3: Home Assistant 웹 UI 접속이 안 되거나 불안정해요.
      해결책: 네트워크 연결을 확인하고 고정 IP를 설정하세요. 초기에는 유선 이더넷 연결이 가장 안정적이에요. 그리고 공유기 설정에서 라즈베리 파이 5에 고정 IP(Static IP)를 할당하는 것이 좋습니다. DHCP로 IP가 바뀌면 접속 주소가 달라져서 불편할 뿐만 아니라, 간혹 네트워크 충돌로 인해 문제가 발생할 수도 있거든요. ping homeassistant.local 명령어로 라즈베리 파이 5에 접근 가능한지 확인해보는 것도 좋습니다.

    • 문제 4: 특정 스마트 기기가 Home Assistant에 연결이 안 돼요.
      해결책: 해당 기기의 통합(Integration)이 설치되어 있는지 확인하고, 로그를 자세히 살펴보세요. Home Assistant는 수많은 기기를 지원하지만, 모든 기기가 플러그 앤 플레이(Plug & Play)는 아니거든요. 공식 문서나 커뮤니티 포럼을 검색해보면 대부분 해결책을 찾을 수 있어요. 저는 Zigbee 동글 문제로 고생했는데, 드라이버를 다시 설치하고 Home Assistant에서 재인식시키니 해결되더라고요.

    라즈베리 파이 5와 Home Assistant 활용 핵심 특징 및 최적화 요약 인포그래픽

    라즈베리 파이 5와 Home Assistant를 활용한 스마트홈 구축의 핵심 포인트를 한눈에 볼 수 있는 요약 인포그래픽입니다.

    6. 마무리하며: 여러분의 홈랩, 라즈베리 파이 5로 시작해보세요!

    오늘은 라즈베리 파이 5에 Home Assistant를 설치하고 최적화하는 과정을 제 경험을 담아 자세히 설명해 드렸습니다. 처음에는 조금 복잡하게 느껴질 수도 있지만, 일단 구축하고 나면 상상 이상의 편리함과 자동화의 재미를 느낄 수 있을 거예요. 저도 처음엔 이게 뭔가 싶었는데, 이제는 이 작은 라즈베리 파이 5가 제 스마트홈의 심장 역할을 톡톡히 하고 있답니다.

    라즈베리 파이 5의 강력한 성능과 Home Assistant의 무한한 확장성을 활용하여 여러분만의 스마트홈을 구축해보세요. 다음 글에서는 Home Assistant 대시보드를 멋지게 꾸미는 방법이나, 특정 기기를 연동하는 심화 과정에 대해 다뤄볼까 합니다. 혹시 궁금한 점이나 제가 놓친 부분이 있다면 언제든 댓글 남겨주세요! 저도 배우는 자세로 함께 성장하고 싶습니다.

  • [3D Printer] OctoPrint 완벽 가이드: 3D 프린터 원격 제어 및 모니터링 설정

    3D 프린터 옆에 계속 붙어 있어야 했던 그 시절

    홈랩에 3D 프린터를 들인 지 얼마 안 됐을 때 얘기인데요. 처음엔 정말 신기해서 출력 내내 옆에서 지켜봤거든요. 근데 현실은 긴 출력물은 6시간, 길면 12시간씩 걸리잖아요. 그걸 매번 옆에서 볼 수도 없고, 그렇다고 자리 비웠다가 필라멘트 엉켜서 출력 실패하면… 그 허탈감이란. 😅

    그러다 알게 된 게 바로 OctoPrint입니다. 처음 들었을 때 “이게 뭐지, 문어 인쇄?” 했는데 막상 써보니까 3D 프린터 생활이 완전히 바뀌더라고요. 이 글에서는 OctoPrint 설치부터 3D 프린터 원격 제어, 모니터링 설정까지 직접 구축하면서 겪은 삽질과 노하우를 공유해 드릴게요.

    ▲ OctoPrint 전체 구성도: 라즈베리파이가 3D 프린터와 PC/스마트폰을 연결하는 허브 역할을 합니다.

    OctoPrint란? 3D 프린터 원격 제어의 핵심

    OctoPrint는 3D 프린터를 웹 브라우저로 원격 제어하고 모니터링할 수 있게 해주는 오픈소스 소프트웨어예요. 쉽게 말하면, 3D 프린터에 스마트 두뇌를 달아주는 거죠.

    보통 라즈베리파이(Raspberry Pi)에 설치해서 사용하는데, 라즈베리파이가 3D 프린터 옆에 항상 켜져 있으면서 USB로 프린터와 연결되고, 우리는 어디서든 웹 브라우저로 접속해서 출력을 시작하거나 멈추거나, 카메라로 실시간 확인을 할 수 있는 구조랍니다.

    OctoPrint로 할 수 있는 주요 기능

    • ✅ 웹 브라우저에서 G-code 파일 업로드 및 출력 시작/정지
    • ✅ 노즐(Nozzle) 온도, 베드(Bed) 온도 실시간 모니터링 및 제어
    • ✅ 웹캠 연결 시 실시간 영상 스트리밍 및 타임랩스(Timelapse) 촬영
    • ✅ 출력 진행률, 남은 시간 확인
    • ✅ 플러그인(Plugin) 시스템으로 기능 무한 확장
    • ✅ 스마트폰 앱 연동 (OctoEverywhere, OctoApp 등)

    저 처음에 온도 그래프가 실시간으로 그려지는 거 보고 진짜 감탄했었거든요. 인프라 엔지니어 감성으로 보면 Grafana 대시보드 느낌이라 바로 마음에 들었습니다 ㅎㅎ.

    OctoPrint 시작하기: 준비물 체크리스트

    본격적으로 OctoPrint 설치에 들어가기 전에 필요한 것들을 정리했습니다. 제가 직접 사용한 구성 기준이에요.

    항목 권장 사양 비고
    라즈베리파이 Raspberry Pi 3B+ 이상 Pi 4 추천 (웹캠 스트리밍 쾌적)
    MicroSD 카드 8GB 이상 (Class 10) 16GB 이상 권장
    USB 케이블 프린터-라즈베리파이 연결용 데이터 통신 가능한 케이블 필수
    전원 어댑터 라즈베리파이 공식 어댑터 불안정한 전원은 SD 카드 손상 원인
    웹캠 (선택) USB 웹캠 모니터링 강화 시 추가

    ⚠️ 주의: USB 케이블은 충전 전용이 아닌 데이터 통신이 가능한 케이블을 써야 해요. 이걸 몰라서 처음에 한참 헤맸거든요. 케이블 바꾸니까 바로 인식됐습니다.

    OctoPrint 설치: OctoPi 이미지로 빠르게 시작하기

    OctoPrint를 라즈베리파이에 설치하는 가장 쉬운 방법은 OctoPi 이미지를 사용하는 거예요. OctoPi는 라즈베리파이 OS 위에 OctoPrint가 미리 설치된 커스텀 이미지라 처음부터 직접 설치하는 것보다 훨씬 편합니다.

    1단계: OctoPi 이미지 다운로드 및 SD 카드 굽기

    1. 공식 사이트(octoprint.org)에서 OctoPi 이미지를 다운로드합니다.
    2. Raspberry Pi Imager를 실행하세요.
    3. “OS 선택”에서 “Use custom”을 선택하고 다운받은 OctoPi 이미지를 선택합니다.
    4. SD 카드를 선택하고 굽기 전에 ⚙️ 고급 설정을 열어 Wi-Fi와 SSH를 미리 설정해 두세요.

    💡 팁: Raspberry Pi Imager의 고급 설정에서 Wi-Fi SSID와 비밀번호, SSH 활성화, 사용자 이름/비밀번호를 미리 설정해두면 나중에 별도 작업 없이 바로 SSH 접속이 돼요. 이거 모르면 모니터 연결해서 설정해야 하는데, 알면 훨씬 편합니다.

    2단계: Wi-Fi 설정 확인 (선택사항)

    Raspberry Pi Imager에서 미리 설정했다면 이 단계는 건너뛰어도 괜찮아요. 추가 설정이 필요하면 SD 카드 루트 디렉토리의 octopi-wpa-supplicant.txt 파일을 편집할 수도 있습니다.

    # octopi-wpa-supplicant.txt 예시
    network={
      ssid="YOUR_WIFI_SSID"
      psk="YOUR_WIFI_PASSWORD"
    }

    3단계: 라즈베리파이 부팅 및 SSH 접속

    SD 카드를 꽂고 전원을 연결하면 부팅이 시작돼요. 1~2분 기다린 후 SSH로 접속해 보세요.

    # SSH 접속 (기본 호스트명은 octopi.local)
    ssh [email protected]
    
    # 또는 IP 주소로 접속
    ssh [email protected]

    접속이 되면 절반은 성공한 거예요! 🎉

    4단계: OctoPrint 초기 설정 마법사

    SSH 접속이 확인됐으면 이제 웹 브라우저에서 http://octopi.local 또는 라즈베리파이 IP 주소로 접속하세요. 처음 접속하면 Setup Wizard(설정 마법사)가 뜨는데, 순서대로 따라가면 돼요.

    1. Access Control(접근 제어): 관리자 계정 생성
    2. Connectivity Check: 인터넷 연결 확인
    3. Plugin Blacklist: 보안 블랙리스트 활성화 (그냥 켜두세요)
    4. Printer Profile: 3D 프린터 정보 입력

    프린터 프로파일(Printer Profile) 설정 시 프린터 제조사 홈페이지나 매뉴얼에서 베드 크기, 노즐 직경 등을 확인해서 입력하면 돼요.

    ▲ OctoPrint 웹 대시보드: 온도 그래프, 출력 진행률, 카메라 피드가 한 화면에 표시됩니다.

    3D 프린터 원격 제어 핵심 기능 설정하기

    프린터 USB 연결 및 인식 확인

    라즈베리파이와 3D 프린터를 USB 케이블로 연결하고 OctoPrint 웹 화면 왼쪽 상단의 Connect 버튼을 누르세요. 포트(Port)와 Baudrate(통신 속도)를 설정해야 하는데, 대부분의 경우 AUTO로 두면 자동으로 잡혀요.

    # 라즈베리파이에서 연결된 USB 장치 확인
    ls /dev/ttyUSB* /dev/ttyACM*
    
    # 예시 출력
    /dev/ttyACM0   # 대부분의 3D 프린터가 이 포트로 잡힙니다

    가끔 권한 문제가 생기더라고요. pi 계정에 dialout 그룹 권한이 없으면 포트에 접근을 못합니다.

    # dialout 그룹에 pi 사용자 추가
    sudo usermod -a -G dialout pi
    
    # 적용을 위해 재부팅
    sudo reboot

    웹캠 연동으로 실시간 모니터링 강화

    웹캠을 연결하면 출력 중 실시간으로 프린터 상태를 볼 수 있어서 진짜 편해요. OctoPi에는 기본적으로 mjpg-streamer가 포함되어 있어서 별도 설치 없이 웹캠만 꽂으면 됩니다.

    # 웹캠 인식 확인
    ls /dev/video*
    
    # mjpg-streamer 서비스 상태 확인
    sudo service webcamd status

    OctoPrint 설정 → Webcam & Timelapse 메뉴에서 Stream URL을 확인하세요. 기본값은 보통 http://octopi.local/webcam/?action=stream입니다.

    💡 타임랩스(Timelapse) 기능: OctoPrint는 레이어 변경 시마다 사진을 찍어 자동으로 타임랩스 영상을 만들어 줘요. 출력 완료 후 설정 메뉴에서 렌더링된 영상을 다운받을 수 있어요. 이거 처음 만들어봤을 때 진짜 신기했습니다.

    꼭 설치해야 할 OctoPrint 플러그인 추천

    OctoPrint의 진짜 매력은 플러그인 생태계예요. Settings → Plugin Manager → Get More에서 검색해서 설치할 수 있습니다.

    플러그인 이름 기능 추천 이유
    Bed Visualizer 베드 레벨링 시각화 베드 평탄도를 3D 그래프로 확인
    PrintTimeGenius 출력 시간 예측 개선 기본 시간 예측보다 훨씬 정확함
    Telegram Notifications 텔레그램 알림 출력 완료/실패 시 스마트폰 알림
    Filament Manager 필라멘트 재고 관리 남은 필라멘트 양 추적
    OctoEverywhere 외부 네트워크 접속 VPN 없이 외부에서 안전하게 접속

    저는 특히 Telegram Notifications 플러그인을 강력 추천해요. 출력이 완료되거나 실패했을 때 텔레그램으로 사진이랑 같이 알림이 오거든요. 다른 일 하다가 알림 받고 가서 확인하면 되니까 정말 편합니다.

    ⚠️ 자주 겪는 문제와 해결법

    OctoPrint 구축하면서 겪은 문제들과 해결법을 정리했어요. 저만 겪은 게 아닐 거라 생각합니다.

    문제 1: 프린터가 연결됐다가 끊겼다가 반복

    원인은 대부분 두 가지예요. 첫째는 케이블 문제, 둘째는 라즈베리파이 전원 불안정입니다. USB 허브를 사용한다면 전원 공급이 되는 허브인지 확인하세요. 라즈베리파이 전원 어댑터는 공식 어댑터를 쓰는 게 정말 중요해요. 저도 저렴한 어댑터 쓰다가 한참 고생했거든요.

    # 라즈베리파이 전원 상태 확인 (under-voltage 경고 확인)
    dmesg | grep -i voltage
    
    # 또는
    vcgencmd get_throttled
    # 0x0이면 정상, 다른 값이면 전원 문제

    문제 2: 웹캠 화면이 안 나옴

    웹캠이 USB 3.0 포트에서 인식이 안 되는 경우가 있어요. USB 2.0 포트로 바꿔서 꽂아보세요. 라즈베리파이 Pi 4에서는 USB 포트별로 전력 공급이 달라서 포트를 바꾸는 것만으로 해결되기도 합니다.

    # 웹캠 인식 여부 확인
    lsusb
    
    # v4l2 장치 목록 확인
    v4l2-ctl --list-devices

    문제 3: 외부에서 접속이 안 됨

    집 밖에서 OctoPrint에 접속하려면 포트 포워딩이나 VPN, 또는 OctoEverywhere 같은 서비스를 써야 해요. 보안 때문에 OctoPrint를 인터넷에 직접 노출하는 건 권장하지 않습니다. 저는 이미 홈랩에 VPN 서버가 있어서 VPN 연결 후 내부 IP로 접속하는 방식을 써요.

    ⚠️ 보안 경고: 라우터에서 OctoPrint 포트를 직접 외부에 포워딩하는 건 절대 하지 마세요. OctoEverywhere 같은 보안 터널 서비스나 VPN을 사용하세요.

    ▲ OctoPrint 플러그인 매니저와 텔레그램 알림 설정 화면 예시.

    설정 완료! 3D 프린터 원격 제어 활용하기

    모든 설정이 완료되면 이런 것들이 가능해져요. 드디어 됐다! 🎉

    • 집 어디서든 Wi-Fi 연결 상태에서 3D 프린터 원격 제어 가능
    • 스마트폰 브라우저에서도 OctoPrint 대시보드 접속 가능
    • 출력 중 자리를 비워도 카메라로 실시간 확인
    • 출력 완료/실패 시 텔레그램 알림 수신
    • 출력물마다 예쁜 타임랩스 영상 자동 생성

    심화 활용: G-code 스크립트 자동화

    OctoPrint에서는 출력 시작 전/후에 자동으로 실행할 G-code를 설정할 수 있어요. Settings → Printer Profiles 또는 Settings → GCODE Scripts에서 설정합니다.

    # 출력 시작 전 G-code 예시 (베드 자동 레벨링 후 시작)
    G28 ; 홈 포지션으로 이동
    G29 ; 자동 베드 레벨링 (ABL 지원 프린터)
    G92 E0 ; 익스트루더 초기화
    
    # 출력 완료 후 G-code 예시
    G91 ; 상대 좌표 모드
    G1 Z10 F3000 ; Z축 10mm 올리기
    G90 ; 절대 좌표 모드
    G1 X0 Y200 F3000 ; 베드를 앞으로 이동 (출력물 꺼내기 쉽게)
    M84 ; 모터 끄기

    이런 자동화 스크립트를 잘 설정해두면 출력 시작 전 베드 레벨링을 자동으로 하거나, 출력 완료 후 베드가 자동으로 앞으로 나와서 출력물 꺼내기도 편해져요. 실제로 써보니까 이게 진짜 편하더라고요.

    OctoPrint 설치 방법 비교: OctoPi vs 수동 설치

    구분 OctoPi 이미지 사용 기존 라즈베리파이 OS에 수동 설치
    설치 난이도 쉬움 ⭐ 보통 ⭐⭐⭐
    설치 시간 15~30분 1시간 이상
    웹캠 지원 기본 포함 별도 설정 필요
    다른 서비스 공존 제한적 자유롭게 구성 가능
    추천 대상 OctoPrint 전용 라즈베리파이 기존 라즈베리파이에 추가 설치

    처음 시작하시는 분들께는 무조건 OctoPi 이미지를 추천해요. 저도 처음엔 수동 설치로 삽질하다가 결국 OctoPi로 갈아탔거든요 ㅎㅎ.

    ▲ OctoPrint 설치 옵션 비교 및 핵심 기능 체크리스트 요약.

    자주 묻는 질문 (FAQ)

    Q. 라즈베리파이 없이 OctoPrint를 쓸 수 있나요?

    네, 가능해요. Windows나 macOS, Linux PC에도 설치할 수 있습니다. 다만 24시간 켜두기엔 라즈베리파이가 전기세 면에서 훨씬 유리해요. 항상 켜두는 용도라면 라즈베리파이를 강력히 추천합니다.

    Q. OctoPrint 설치 후 슬라이서(Slicer) 소프트웨어는 필요 없나요?

    아니요, 슬라이서는 여전히 필요해요. OctoPrint는 G-code를 프린터에 전송하고 제어하는 역할이고, G-code 파일 자체는 Cura, PrusaSlicer 같은 슬라이서로 만들어야 합니다. 슬라이서에서 만든 G-code 파일을 OctoPrint에 업로드해서 출력하는 방식이에요.

    Q. OctoPrint가 무료인가요?

    OctoPrint 자체는 완전히 무료 오픈소스 소프트웨어예요. 라즈베리파이 하드웨어 비용만 들고, OctoEverywhere 같은 부가 서비스는 유/무료 플랜이 있습니다.

    마무리: 3D 프린터 옆에서 해방됐습니다

    OctoPrint 덕분에 정말 3D 프린터 생활이 달라졌어요. 이제는 출력 시작해 놓고 다른 일 하다가 텔레그램 알림 오면 확인하는 식으로 써요. 처음 설정할 때 케이블 문제, 권한 문제로 삽질 좀 했지만 한 번 잘 잡아두면 정말 편합니다.

    정리하면 이렇습니다:

    • ✅ OctoPi 이미지로 라즈베리파이에 설치 (가장 쉬운 방법)
    • ✅ USB 데이터 케이블 + 안정적인 전원 어댑터 필수
    • ✅ dialout 그룹 권한 설정 잊지 말기
    • ✅ 웹캠 연결로 3D 프린터 원격 모니터링 강화
    • ✅ Telegram Notifications 플러그인으로 알림 설정
    • ✅ 외부 접속은 VPN 또는 OctoEverywhere 사용 (보안 중요!)

    다음 글에서는 OctoPrint와 Home Assistant(홈 어시스턴트)를 연동해서 스마트홈과 3D 프린터를 통합하는 방법을 다뤄볼 예정입니다. 혹시 궁금한 점이나 다른 삽질 경험 있으시면 댓글로 공유해 주세요! 😊