라즈베리파이 클러스터 트러블슈팅 회고와 nginx 배포 설정 점검 (연재 3/3)
과거 PR 기록을 되짚어 라즈베리파이 클러스터에서 겪은 사건들을 정리하다가, 실제 운영 중인 nginx 설정과 배포 스크립트에서 위험 요소를 발견해 함께 고친 하루를 정리했습니다.
운영하면서 막힌 문제와 공부한 내용을 다른 사람도 읽을 수 있게 정리한 글입니다.
과거 PR 기록을 되짚어 라즈베리파이 클러스터에서 겪은 사건들을 정리하다가, 실제 운영 중인 nginx 설정과 배포 스크립트에서 위험 요소를 발견해 함께 고친 하루를 정리했습니다.
블로그 서버에 ufw를 켜는 단순한 작업이었는데, 알고 보니 SSH 접속이 끊길 수도 있고 쿠버네티스 파드 통신이 깨질 수도 있는 꽤 위험한 작업이었습니다. 왜 그런지, 어떻게 안전하게 처리했는지 정리해봤습니다.
운영 중인 개인 블로그 서버의 방문자 로그를 들여다보다가 이상한 패턴들을 발견해서 하나씩 파헤쳐봤습니다. 단순한 봇 스캔인 줄 알았는데, 파다 보니 실제로 뚫려 있던 인증 우회 취약점까지 찾게 된 하루였습니다.
블로그의 프로젝트 탭을 어떻게 나눠야 할지 고민하다가, 단순히 "개인/팀"으로 나누는 게 맞는지 다시 생각해보게 됐습니다.
글이 하나둘 쌓이다 보니 어느 순간부터 이 프로젝트를 어떤 순서로 만들어왔는지 한눈에 안 보인다는 걸 느꼈다. 그래서 프로젝트 페이지에 개발 기록을 시간순 트리로 보여주는 기능을 직접 만들어봤고, 그 과정에서 SVG와 API 페이지네이션에 대해서도 다시 짚어보게 됐다.
내가 운영하는 블로그에 커밋/PR 기반으로 글이 자동으로 올라오는 파이프라인이 있는데, 거기서 붙는 태그랑 글투가 계속 거슬려서 오늘 손을 봤다.
오늘은 개인 블로그 개편 작업을 하다가 뜻밖에 "자기소개는 어떻게 써야 하는가"라는 질문까지 흘러가게 됐다. 처음엔 단순한 UI 정리였는데, 끝에는 소개 문단 하나하나를 다시 쓰는 작업이 되어 있었다.
블로그를 운영하면서 누가 어떤 페이지를 보고 가는지 전혀 알 수 없다는 게 계속 신경 쓰였습니다. Astro와 Node 백엔드로 만든 개인 블로그에 방문자 로깅 기능을 처음부터 설계하고 붙여본 과정을 정리합니다.
블로그에 쌓인 글들을 정리하다가 태그 문제를 발견했고, 그걸 고치는 과정에서 글 자체의 톤과 프론트엔드 UI 버그, 그리고 프로젝트별 기록을 한눈에 보는 기능까지 손보게 된 하루였다.
오늘은 블로그를 새로 만들면서 미뤄뒀던 부분들을 손봤습니다. 소개 페이지 내용을 실제 상태에 맞게 고치고, 프로젝트 카드 디자인을 통일하고, 마지막엔 소개 페이지 자체의 방향을 완전히 바꿔봤습니다.
내 블로그에 누가 들어오는지 전혀 알 수 없다는 게 계속 마음에 걸려서, 방문자 로깅 시스템을 직접 설계하고 붙여봤다. 그 과정에서 SSR과 정적 프리렌더링의 차이를 제대로 이해하게 됐다.
오늘은 두 가지 작업을 했는데, 하나는 프로젝트 목록에 개인/팀 구분을 추가하는 프론트/백엔드 작업이었고 다른 하나는 팀원이 계속 겪는다는 SSH 접속 문제를 추적하는 것이었습니다. 특히 후자를 파고들면서 SSH 강제 명령(forced command)과 git 파일 권한에 대해 생각보다 많이 배웠습니다.
깃허브 PR 하나를 붙잡고 "이거 머지해도 되나?"를 판단하는 기준을 제대로 세워보려고 실제 PR을 하나 끝까지 파봤습니다. 결론부터 말하면 코드 품질, 테스트 커버리지, 절차적 게이트(리뷰 승인)는 완전히 별개의 축이라는 걸 몸으로 확인한 경험이었습니다.
오픈소스 프로젝트 PR에서 프론트엔드 CI가 실패하는 걸 발견하고, 원인을 끝까지 추적해봤습니다. 단순히 에러 로그만 보고 끝내지 않고 "왜 하필 지금 이 에러가 나는가"까지 파고들어본 기록입니다.
내가 만들어 쓰고 있는 학습 콘텐츠 자동 생성 파이프라인에서 로그 파일 정리와 AI 모델 폴백 구조 리팩토링을 진행한 기록이다.
컴퓨터구조랑 운영체제를 책으로만 보다가 도저히 흥미가 안 붙어서, 그냥 집에 있는 라즈베리파이를 직접 뒤적거리면서 공부해보기로 했다. `htop` 하나 띄워놓고 시작한 질문이 결국 가상 메모리, 스레드, 커널/유저 스페이스, 소켓, epoll까지 이어졌다.
라즈베리파이에 커스텀 커널을 올렸다가 부팅이 먹통이 되어버린 사건을 처음부터 끝까지 복구한 기록입니다. 커널 모듈 버전 불일치라는 원인을 찾아내고, SD카드를 Windows에서 포렌식하듯 뜯어보며 정상 커널을 되살린 다음, 결국 원래 하려던 커스텀 커널 배포까지 완주했습니다.
임베디드 리눅스 스터디 1주차 과제로 라즈베리파이 커널을 직접 크로스 컴파일해서 보드에 올려봤다. 결과부터 말하면 빌드는 성공했는데 파이가 먹통이 되는 사고를 쳤고, 그 원인을 추적하는 과정에서 커널-모듈 관계를 훨씬 제대로 이해하게 됐다.
서버에 SSH로 접속하려는데 갑자기 REMOTE HOST IDENTIFICATION HAS CHANGED 경고와 함께 연결이 차단되는 문제를 겪었다. 원인을 파악하고 해결하는 과정을 정리해본다.