altair의 프로젝트 일기

강의 자료를 동기화하면서 겪었던 시행착오들 본문

IT/기타

강의 자료를 동기화하면서 겪었던 시행착오들

altair823 2023. 4. 7. 20:58

개요

 대학교에서 강의를 듣다보면 강의 자료들이 쌓이기 마련이다. 강의 PPT부터 필기, 과제, 프로젝트 파일들까지, 생각보다 많은 파일들이 모인다. 가지고 다니는 기기가 하나라면 그저 한 폴더에 몰아넣고 정리만하면 된다. 하지만 나는 사용하는 기기가 여러 개고 강의 자료도 많다. 거기다 과제 파일들까지 모두 손수 관리하기엔 너무 버거웠다. 나스에 넣고 여러 기기에서 나스에 접속해 다운로드 받는 식으로 관리했었는데, 귀찮아서 까먹고 수정해버려 파일이 충돌하거나 아이패드 같이 접속할 수 없는 기기에서 파일을 열어야 하는 경우가 있었다. 이번 글에선 내가 강의 자료들을 여러 기기에서 동기화하고 최신 버전을 유지하는 방법을 소개하고자 한다. 

과거

 코로나가 세상을 휩쓸기 전, 그리고 더 옛날 입대하기 전에는 서피스 프로 4 하나만 들고 학교를 다녔다. 그래서 백업용으로 오피스의 OneDrive만 사용했다. 원드라이브는 인터넷에 연결될 때 자동으로 동기화되기 때문에 로컬에 있는 파일을 편하게 수정하고 나중에 인터넷에 연결하기만 하면 되었다. 제대 후 비대면으로 강의를 들을 땐 항상 집에서 들을 수 있었으니 따로 클라우드 서비스를 사용할 필요가 없었다. 가끔가다 한 번씩 나스에 백업하면 충분했다. 하지만 요즘 같이 대면 강의가 대부분이 된 시대에는 다른 방법이 필요했다. 이번 글은 그걸 해결하는 과정에 대해 소개하고자 한다. 

현재

 비대면 수업이 끝나고 대면 수업이 훨씬 많아진 지금, 다음과 같은 문제가 생겼다. 

  • 사용하는 기기가 많아졌다. 정확히 말하자면 파일을 저장하고 동기화해야 하는 기기가 많아졌다. 그 목록은 아래와 같다. 
  • 사용하는 운영체제가 많아졌다. 윈도우, 맥, 리눅스까지. 
  • 기기가 많아진 만큼 수정한 파일의 충돌 위험도 증가했다. 
    • 맥북으로 수정한 파일을 실수로 동기화하지 않은 채, 데스크탑으로 그 파일을 또 다시 수정했다면?
    • 특히 대면 수업 때문에 이동하는 과정에서 인터넷이 불안정한 경우가 많다. 최신화가 보장되기 힘들다. 

요구사항

 때문에 새로운 요구사항들이 생겼다. 

  • 모든 기기에서 파일 동기화가 쉬워야 한다. 너무 어려우면 귀찮아지고 지나친 노력이 들어간다. 
  • 모든 운영체제를 지원해야 한다. 
  • 수정 충돌에 대해 유연해야 한다. 적어도 충돌을 확인하고 다른 파일로 저장할 수 있어야 한다. 
  • 파일의 종류는 주로 문서와 텍스트, 이미지, PPT, PDF 파일이다. 영상만큼 크지는 않지만 MB단위는 쉽게 다룰 수 있어야 한다. 

 

후보

 결국 후보는 몇 가지로 추려진다. 각 후보와 그 단점을 보이겠다. 

  • 원드라이브
    • 무료인 경우 용량이 적다. 원드라이브는 대학생 혜택으로 1테라까지 사용할 수는 있다. 
    • 리눅스에서 지원이 제한적이다. 아치 리눅스용 원드라이브 클라이언트가 있다. 원하는 파일만 동기화 할 수는 있지만 윈도우에서처럼 필요할 때 자동으로 다운받아지는 기능은 없다. 
    • 리눅스 노트북과 맥북에 최소한의 프로그램만 설치하려고 한다. 특히 리눅스 노트북은 저장공간이 32기가 밖에 안되기 때문에 이 부분이 중요하다. 
  • 드롭박스
    • 무료인 경우 용량이 적다. 대학생 혜택도 없다. 
    • 리눅스 지원이 제한적이다. 
  • Git
    • 요구사항을 대부분 만족한다. 
    • 아이패드에서 사용할 수 없다. 
    • Github에 강의 자료를 퍼블릭으로 올릴 수는 없다. 프라이빗으로 올리는 것도 조금 부담스러우니 Git 서버를 하나 만들어야 마음이 편할 듯하다. 
    • 따로 무거운 프로그램을 돌릴 필요가 없다. 친숙한 터미널에서 바로 사용할 수 있다. 
  • 수동
    • 문서 충돌이나 버전이 다를 때 지옥을 경험할 것이다...

 

결과

 사실 이 문제에 대해 깊게 생각해보기 전까진 드롭박스를 쓰고 있었다. 하지만 적은 용량도 걸리지만 무엇보다 최대 3대의 기기에서만 동기화 할 수 있다는 점이 큰 문제가 되었다. 때문에 컴퓨터끼리는 Git을 통해 관리하고 아이패드와 노트북만 드롭박스로 동기화 하기로 했다. 

 Gitlab 서버

 예전에 라즈베리파이에 직접 깃랩 서버를 올린 적이 있다. 저장용량도 16기가로 강의자료 저장하기엔 나름 여유가 있었다. 그래서 이곳에 리포지토리를 만들어 관리하기로 하였다. 

 약 한 달간 이 깃랩 서버로 데스크탑, 리눅스 노트북, 맥북에서 파일들을 모두 잘 관리할 수 있었다. 그러나 몇 가지 마음에 걸리는 불편한 점이 있었다. 

  • 서버의 안정성을 내가 직접 관리해야 한다. 얼마전 동네가 정전되었는데 전기가 다시 들어왔을 때 서버는 다시 복구되었지만, 데이터 교환이 없을 때 일어나서 망정이지 있었다면 심각한 결함이 생겼을지도 모른다. 
  • 24시간 동작해야하니 꽤 높은 발열이 발생한다. 지금까지는 겨울, 봄이었으니 크게 문제되지 않았지만 여름에 책상 앞에서 항상 열을 뿜어대는 서버가 있다는 것은 마음에 들지 않는다. 
  • 웹사이트를 올리기 때문에 꽤 높은 램 점유율과 어느 정도의 CPU 사용률을 보인다. 하루 동안 실질적으로 쓰는 시간은 몇 분이 안되는데 계속 돌아간다는게 너무 비효율적이다. 
  • 성능이 낮다. 몇 십 메가짜리 파일을 주고 받는 데도 십 몇초가 걸리고 백 메가가 넘어가면 정말 오래걸린다. 사이트를 돌아다닐 때도 반응성이 낮다. 

계속 쓰라면 쓸 수도 있겠지만 더 나은 대안을 발견했다. 

Oracle Cloud Infrastructure(OCI)

 AWS처럼 오라클도 클라우드 컴퓨팅 서비스를 제공한다는 사실은 알았다. 어느 날 돌아다니다가 오라클 클라우드가 훨씬 높은 성능의 프리티어 사양을 제공한다는 것을 알게되었다. 예전에 AWS에 간단한 웹사이트를 올렸다가 예상치 못한 지출이 발생한 적 있다. 인스턴스도 지우고 저장소도 지웠지만 계속 몇 천원씩 지불이 이루어지는 것에 놀라 아이디까지 삭제했었다. 

 하지만 오라클 클라우드는 AWS처럼 프리티어가 기간제한도 아니고, 훨씬 높은 성능인데다가, 계정을 업그레이드하지 않으면 지출이 아예 발생하지 않는다는 점이 매우 마음에 들었다. 

오라클 클라우드에서 실행 중인 인스턴스의 모습

 위 캡쳐는 깃랩을 돌리는 오라클 클라우드 인스턴스다. 완전 무제한으로 쓸 수 있는 인스턴스는 AMD 가상 CPU 1개와 1기가 메모리 뿐이라 깃랩을 돌릴 수 없고, 무료로 한 달 동안 쓸 수 있는 인스턴스는 ARM 기반의 OCPU 3000시간과 메모리 18000GB이다. 따라서 한 달 동안 하나의 인스턴스를 최대 성능으로 쓰려면 4코어에 24GB메모리를 사용하면 되고, 여러 인스턴트를 쓰려면 그만큼 코어와 메모리를 분할하면 된다. 

 깃랩을 여러 사람과 쓰지 않고 나 혼자 쓰기 때문에 높은 성능은 필요 없다. 그래서 딱 절반의 성능인 2OCPU에 12GB 메모리만 설정한 모습이다. 지금은 서버가 약 3.8기가의 메모리만 사용 중이기 때문에 아주 넉넉하게 메모리가 남았다. 

 성능 또한 라즈베리파이에 비해 굉장히 빠르다. CPU 성능을 직접적으로 비교할 수는 없지만 집 인터넷에 연결되어 있는 것보다 훨씬 빠르게 통신할 수 있다는 점이 속도에 큰 영향을 미치는 듯하다. 

 

결론

 문서가 주가 되는 강의 자료 특성 상 Git은 아주 좋은 선택이었다고 생각한다. 다른 클라우드처럼 직관적이지는 않지만 특별히 무거운 프로그램을 계속 돌릴 필요도 없고, 충돌도 구체적으로 수정할 수 있으며, 무엇보다 사용 과정에서 Git에 대해 더 많이 알게되고 익숙해져서 좋았다. 

 깃랩 서버는 24시간 매일 켜놓던 서버였지만 실 사용 시간은 하루에 몇 분이 되지 않았었다. 여러 위험을 피해 안정성을 관리하기도 어려웠을 뿐더러 지나치게 Idle시간의 비율이 큰 점도 마음에 걸렸다. 어찌됐건 전기를 계속 먹는 것 아닌가?

 하지만 강의 자료를 관리하는 깃랩 서버를 오라클 클라우드에 올리고 관리하니 높은 안정성을 얻을 수 있었고 전기도 아낄 수 있었다. 내 데이터가 외부에 저장되어 있는 것이 마음에 안들지만 민감한 데이터는 아니니 크게 걱정하지 않는다. 이 정도면 안전하고 충분히 확장성 있는 솔루션이라고 생각한다. 

 이번에 깃랩 서버를 오라클 클라우드로 옮기면서 왜 많은 기업들이 직접 서버를 구축하지 않고 AWS에 서버를 두는지 확실히 느꼈다. 그 전에도 대강 이유는 알고 있었지만 내가 직접 내 서버를 관리해보고, 또 클라우드에 가상머신으로 올려도 보면서 그 둘의 차이와 장단점을 확실히 알게 되었다. 

 

2023년 1학기 이후

 학기를 마치고 나니 여러가지가 바뀌었다. 리눅스 노트북은 자주 프리징이 일어나 그냥 맥북을 들고다니게 되었고, 아이패드에서도 원드라이브 앱이 있다는 것을 알게되었다. 

 그래서 학기가 끝날 때쯤 쓰는 솔루션은 결국 원드라이브가 되었다... 역시 많은 사람들이 쓰는데는 이유가 있는 것 같다. 

 git과 gitlab에 대해 더 많은 걸 알게 된 좋은 경험이었다. 

'IT > 기타' 카테고리의 다른 글

Git branch 전략에 대하여  (0) 2024.09.14
MySQL을 사용한 중복 파일 관리 프로그램  (1) 2023.10.08
비정형 기계와 유전 알고리즘  (0) 2022.02.01
비정형 기계 만들기  (0) 2022.01.28
M-disc로 아카이빙한 후기  (0) 2021.12.05
Comments