< 정전이나 네트워크 장애 대비 ‘자가복구 시스템’ 구축기
본문 바로가기

정전이나 네트워크 장애 대비 ‘자가복구 시스템’ 구축기

📑 목차

    “정전·네트워크 장애에도 꺼지지 않는 구형 스마트폰 안 쓰는 스마트폰 서버 만들기. UPS·스마트 플러그·Termux 부팅 자동화·네트워크 자가 복원·데이터 무결성 점검으로 완성한 자가복구 시스템 구축기.”

    장애는 예고 없이 온다 – 자가복구 시스템의 필요성

    정전이나 네트워크 장애 대비 ‘자가복구 시스템’ 구축기

    출처:pixabay

     

    서버를 운영하다 보면 진짜 위기는 보안 공격보다도 정전과 네트워크 장애에서 시작된다.
    갑작스러운 전력 차단은 데이터 손상뿐 아니라, 서버 프로세스의 비정상 종료로 시스템 전체가 망가질 수 있다.
    특히 구형 스마트폰 안 쓰는 스마트폰 서버처럼 내장 저장소를 사용하는 환경은 전원 불안정에 취약하다.
    한 번의 정전이 수개월간 쌓은 로그, 설정, 데이터베이스를 순식간에 날려버릴 수 있다.

    이런 이유로 나는 ‘자가복구 시스템(Self-Recovery System)’ 구축을 실험하기로 했다.
    구형 스마트폰 안 쓰는 스마트폰 서버를 24시간 운영하려면, 전원이 꺼져도 다시 켜지고, 네트워크가 끊겨도 스스로 재연결되는 구조가 필요했다.
    단순히 UPS(무정전 전원 장치)를 다는 것으로는 충분하지 않았다.
    구형 스마트폰 안 쓰는 스마트폰은 물리 전원 대신 USB 충전 전원으로 구동되기 때문에, 장비 자체의 ‘재부팅 감시’와 ‘네트워크 자동 복원’ 기능이 중요했다.
    그 시작은 “구형 스마트폰 안 쓰는 스마트폰이 스스로 살아나는 법을 배우는 것”이었다.
    복구란 결국 ‘예방’의 연장선에 있다는 것을 이번 실험에서 절실히 깨달았다.
    이 프로젝트를 통해 나는 단순한 안정성 확보를 넘어, 서버가 스스로를 관리하는 완전한 자율 구조를 지향하게 되었다.


    전원 장애 복구 – 스마트 리셋과 비상 전력 시스템

    가장 먼저 구축한 것은 비상 전력 체계였다.
    구형 스마트폰 안쓰는 스마트폰 서버는 USB 전원을 사용하기 때문에, 이를 유지하려면 소형 UPS(DC형 보조 배터리)와 전압 안정기(Voltage Regulator)가 필요했다.


    일반 보조배터리는 충전과 방전을 동시에 처리하지 못하지만, UPS형 배터리는 전력공급이 끊겨도 서버에 전원을 계속 공급한다.
    테스트 결과, 10,000mAh 용량의 UPS 배터리로 약 11시간 연속 구동이 가능했다.

    즉, 단기 정전은 문제 되지 않았다.

    하지만 더 큰 문제는 전원 복귀 후의 자동 재가동이었다.


    구형 스마트폰 안 쓰는 스마트폰은 정전 후 전원이 다시 들어와도 자동으로 켜지지 않는다.
    이를 해결하기 위해 나는 ‘스마트 플러그(와이파이 콘센트)’를 활용했다.
    이 장치를 통해 전력이 복귀하면 일정 시간 후 자동으로 전원을 다시 공급하게 설정했다.
    이때 Termux에 부팅 자동 실행 앱(Termux:Boot) 을 연동해, 전원이 켜지면 서버가 자동으로 실행되도록 스크립트를 작성했다.

     
    #!/data/data/com.termux/files/usr/bin/bash sleep 30 termux-wake-lock bash /data/data/com.termux/files/home/start_server.sh
     

    이 스크립트는 구형 스마트폰 안 쓰는 스마트폰이 켜진 뒤 30초 후 서버를 복구시켜, 완전한 무인 재가동 환경을 구현했다.
    또한 전원 이상 발생 시 스마트 플러그 로그를 통해 정전 시간을 기록함으로써, 전력 안정성 데이터도 수집할 수 있었다.
    이 과정에서 예상치 못한 장점도 발견했는데, 전력 패턴이 기록되다 보니 정전 빈도와 지속 시간을 데이터로 분석할 수 있게 된 것이다.


    네트워크 장애 복원 – 자가 진단과 자동 재연결 로직

    서버가 살아 있어도 인터넷이 끊기면, 서비스는 중단된 것이나 마찬가지다.
    이를 대비해 네트워크 자가 진단 스크립트를 작성했다.
    이 스크립트는 일정 주기로 외부 서버(ping 대상: 8.8.8.8, github.com 등)에 연결을 시도하고, 실패하면 자동으로 재연결을 수행한다.
    Termux에서 다음과 같은 단순 로직으로 구현했다.

     
    #!/data/data/com.termux/files/usr/bin/bash ping -c 2 8.8.8.8 > /dev/null 2>&1 if [ $? -ne 0 ]; then svc wifi disable sleep 5 svc wifi enable am broadcast -a android.intent.action.BOOT_COMPLETED fi
     

    이 코드는 와이파이 연결을 재시작하고, 부팅 브로드캐스트를 통해 네트워크 초기화를 트리거한다.
    실험 결과, 라우터 오류나 와이파이 단절이 발생하더라도 약 15초 이내에 자동 복원이 가능했다.
    또한 logcat 출력을 분석해 실패 시점을 기록하도록 해, 네트워크 중단 패턴을 파악할 수 있었다.


    이 방식은 단순하지만 효과적이었다 — 마치 인간이 직접 확인하듯 구형 스마트폰 안 쓰는 스마트폰이 스스로 상태를 진단하고 행동하는 것이다.
    궁극적으로 이런 자동 복원 로직 덕분에, 나는 장시간 외출 중에도 서버가 스스로 네트워크를 복원하는 신뢰성을 확보할 수 있었다.


    데이터 무결성과 서비스 지속성 확보

    정전과 네트워크 복구만으로는 완전한 복구 시스템이라 할 수 없다.
    진짜 핵심은 데이터 무결성(Integrity) 유지다.
    갑작스러운 전원 차단으로 데이터가 손상되는 것을 막기 위해, 나는 주기적 스냅숏 백업을 도입했다.
    rsync와 tar 명령을 이용해 일정 주기로 /storage/emulated/0/ServerData 폴더를 압축 저장하고, NAS로 전송하는 방식이다.


    매일 새벽 3시에 자동 백업이 실행되고, 백업본은 7일 치만 보관하도록 설정했다.
    이 과정에서 중요한 것은 백업이 단순 복사에 그치지 않고, 무결성 해시값(sha256 sum)으로 검증된다는 점이다.

    또한 장애 발생 후 자동으로 “데이터 정합성 검사”가 이루어지도록 했다.
    정전 복구 후 crontab에서 다음 명령이 실행되도록 했다.

     
    sha256sum -c /data/data/com.termux/files/home/hashlist.txt

    이 검사는 손상된 파일을 탐지하면, 즉시 이전 백업본으로 교체하도록 한다.
    이로써 서버는 스스로 데이터를 점검하고, 이상 시 자동 복원까지 수행하게 되었다.
    결국 서버의 ‘자가복구’란, 하드웨어보다 데이터 중심의 사고에서 출발해야 한다는 교훈을 남겼다.
    결국 나는 이 자동화 체계를 통해 사람이 개입하지 않아도 데이터 신뢰성과 서비스 연속성이 유지되는 구조를 완성했다.


    결론 – 자동 복구는 결국 ‘자율 운영’의 시작

    이번 실험을 통해 깨달은 것은 명확하다.
    자가복구 시스템은 단순히 장애를 복원하는 도구가 아니라, 서버의 자율성을 완성하는 핵심 기술이라는 점이다.
    정전이 나도, 인터넷이 끊겨도, 백업 파일이 손상돼도 — 스마트폰은 다시 스스로 일어섰다.
    이는 단순한 기술적 편의가 아니라, 인간의 개입 없이 스스로 안정성을 유지하는 ‘자립형 시스템’의 시작이다.

    앞으로는 이 구조를 더욱 발전시켜, AI 기반 로그 모니터링을 추가할 계획이다.
    이를 통해 장애 원인을 사전에 예측하고, 고장을 미리 방지하는 진정한 예방형 자가복구 서버를 완성할 것이다.
    스마트폰은 단지 휴대전화가 아니라, 이제는 스스로 회복하고 살아남는 지능형 장치로 진화하고 있다.
    기술이란 결국, 스스로를 고치는 능력을 갖추는 것 — 그 철학이 이번 실험의 출발점이자 결론이었다.
    이 글이 스마트폰 서버를 운영하는 이들에게 ‘운영의 자동화’가 곧 자유의 시작임을 보여주는 하나의 사례가 되기를 바란다.