[개요]

신년을 맞아 어떤 포스팅을 할까 생각을 해보았습니다. “진지한 글로 한해를 가열차게 시작할까?” 아니면 “조금 가벼운 글로 워밍업을 할까?” 그러다가 가볍게 읽을수 있는 글을 하나 포스팅 합니다.

제 주위 개발자 분들을 보면 전자제품을 일반인 보다는 많이 좋아합니다. 필자도 전자제품을 굉장히 좋아합니다. 노트북, 태블릿, e북, 구글홈 등 다양하게 가지고 놉니다. 그런 맥락에서 “개발자 시각을 고려한” 전자제품에 대한 견해를 포스팅해보려 합니다. (~~반응이 나쁘지 않으면 소개할 제품이 몇가지 있습니다.~~)

마찬가지 맥락으로 개발자라면(특히 서버나 웹 개발자) 다들 한번씩 생각을 해봄직한 생각이 내 블로그 구축 혹은 내 서버 구축 을 고민해봅니다. EC2, 헤로쿠 등의 서비스가 잘 나와있기는 하지만 온전한 내것인 서버를 가지고 싶기도 합니다.

이유는 다음과 같습니다.
왠지 하나의 로망이기도 하고 갖고싶기도 하고 ~~자기개발에 도움이 된다는 자기합리화~~도 가능하기 때문입니다. ()장난감이란 표현은 폄하가 아니라 어떤 소프트웨어 책에서 읽었던 SW이든 HW이든 부셔도 좋은 장난감을 가지는게 실력향상에 도움이 된다는데서 영감을 받은 단어입니다.)

[유의사항]

해당 글은 필자가 개발자 시각에서 시놀로지를 장난감으로 가지고 노는 방법에 대한 가벼운 글입니다. 시놀로지 NAS에 대한 광고성 글이 아님을 미리 밝힙니다. 또한 Step-By-Step으로 구축방법을 설명하는 글도 아닙니다.

[바쁘신 분들을 위한 결론]

두괄식으로 포스팅에서 하고자 하는 말부터 정리하자면 아래와 같다.

필자의 의도는 NAS 본연의 기능도 좋지만 Docker로 편하게 나만의 EC2를 구축할수 있다는 점이다.

필자가 시놀로지 NAS라는 장난감을 활용하는 특징점은 크게 2가지이다.

  • 나만의 유튜브 : 유튜브 컨텐츠를 앱/웹 관계없이 감상하듯 내가 원하는 동영상을 보는 앱/웹에서 보는 용도로 활용
  • 나만의 EC2 : Docker를 이용하여 나만의 EC2를 구축하여 활용

이해를 돕기위한 2가지 용도의 활용 구성도는 아래와 같다.

  • 나만의 유튜브 환경
    집 내부 공유기와 내부 기기간의 통신은 생략하였다.
  • 나만의 EC2 환경
    EC2에 여러 인스턴스를 띄운것 처럼 Docker를 활용하여 아래와 같이 꾸몄다.

모든 관리는 아래와 같이 웹 콘솔로 관리합니다.

[시놀로지 구성]

왜 시놀로지 NAS인가?

다시한번 광고가 아니라고 밝히고 이해를 돕기 위해 이미지를 첨부한다. 이런식으로 생겨먹은 녀석이고 많은 사람들이 NAS로 사용을 한다. 하지만 필자가 주목한 점은 Docker를 공식적으로 지원한다는 점이다.

보통 NAS 자체적으로 SVN, 아파치 등을 지원하긴 하지만 자바 개발자로써 SW 자유도가 아쉽기 마련이다. 하지만 시놀로지는 Docker가 열려 있으니 기성품에도 불구하고 SW 개발자로써 가지고 놀기에 매우 좋은 장점이 있다.

이점에 착안하여 Docker기술을 이용하여 EC2 처럼 내부에 여러 Docker 인스턴스를 띄우는 것이다.

거듭 얘기하지만 Docker를 지원하는 것은 시놀로지만의 장점이 아닐 수 있다.(경쟁 제품이나 유사 제품에 대한 정보는 필자가 잘 알지 못한다.) 또한 직접 홈서버를 구축하면 Docker 사용이야 가능하겠지만 NAS 제품으로써의 장점도 겸하는게 필자에게는 장점이다.

이부분도 조금 더 디테일하게 얘기하자면, NAS의 기능과 개발서버로써의 기능이 섞이는 것이 썩 마음에 들지는 않는다. 개발서버를 건드리다 Nas 데이터나 환경이 지저분해지는것 혹은 Nas 기능설정으로 인해 개발환경이 지저분해지는것 둘다 바람직하지 않다고 생각하기 때문이다. 하지만, 대외 서비스용이 아닌 개인 개발용도로는 나쁘지 않은것 같다. 왜냐하면 Docker로 감싸져 있어 시놀로지 OS가 개발환경 구축으로 dependency 등이 지저분해지지 않기 때문에 같은 장비에서 동작하는 것이 납득할만한 수준이라고 생각한다.

시놀로지 하드웨어 사양

하드웨어 사양에서 필자가 주목한 점은 2가지이다.

첫번째는 하드웨어 완성도 및 저전력이다. 같은 스펙으로 직접 조립을 한다면 가격은 비교우위에 있다. 하지만 제품 완성도(디자인, 쇼트방지, HDD 교환편의)나 저전력을 고려해 HW를 구성하려면 돈, 시간, 노력을 쏟아야 한다. 이부분에서 가격을 지불하더라도 수고스러움을 더는게 필자는 낫다고 생각했다.

두번째는 나만의 EC2로 작동 시키기에는 동시접속자가 많지 않은 개인목적의 환경구성에는 HW가 크게 부족함이 없었다. 메모리도 최대 8GB로 구성 가능(업글 가능)하기 때문에 톰캣, 엘라스틱서치(ES)등을 무리가 없었다.

잠깐 Docker가 생소한 분들에게

Docker 홈페이지의 설명의 의하면 Docker컨테이너는 실행에 필요한 코드, 런타임, 시스템 툴, 시스템 라이브러르를 포함한 완전한 파일시스템을 소프트웨어이다.

쉽게 설명하면 VM(VMware나 Virtual Box)처럼 우분투 리눅스, 우분투리눅스 + 엘라스틱서치 와 같은 이미지들을 이용하여 독립적인 환경으로 OS나 OS + 서비스를 실행 할 수 있는데 VM보다는 훨씬 가볍다.

나만의 유튜브로 활용하는 구성도

NAS 본연의 기능으로 활용하는 방안은 아래와 같다. 소장용 데이터의 경우 유실의 위험을 줄이고자 rsync로 구형 NAS에 백업을 한다. 주 용도는 집/바깥을 가리지 않고 필요할때 동영상을 감상하는 것이다. 장점은 원본이 4K영상이더라도 트랜스코딩을 통해 실시간으로 720p/1080p 정도로 무리없이 감상할수 있다는 점이다.

나만의 EC2로 활용하는 구성도

본격적인 목적은 아래와 같이 서버 개발자로써 개인 프로젝트를 아래와 같이 개발/배포 환경을 구축하는데 있다. 집 공유기는 방화벽(?) 역할을 하고 나머지 부분들은 통해서 저는 엘라스틱서치(ES)를 연동한 웹 어플리케이션을 구동중에 있다.

코드의 변화가 있을시에는 로컬 개발 및 (경우에 따라) 로컬ES나 시놀로지ES를 통해서 기능 테스트 후 젠킨스를 통해 재배포를 진행한다.

특징점은 젠킨스와 ES의 경우 시놀로지의 파일시스템을 직접 마운트하여 업그레이드가 용이하게 구축해두었다.

[시놀로지 관리 콘솔]

시놀로지 웹 관리자 화면

아래와 같이 웹 관리자 콘솔에서 Docker 기능이 존재함을 알 수 있다.

Docker 레지스트리 화면

Docker 앱 메뉴중에 레지스트리 메뉴를 통해 Docker사용자에게 익숙한 레지스트리를 통해 이미지를 다운 받을 수 있다. 예를 들자면 엘라스틱서치(ES)

포트설정 및 볼륨

해당 기능은 docker의 기능이 시놀로지에서 편하게 UX가 구성되어 있을 뿐이다. 포트 및 볼륨 설정을 통해 물리장비의 포트와의 맵핑, 물리장비 파일경로의 마운트여부를 정할 수 있다.

예를 든 그림에서는 시놀로지의 /es 경로를 ES용 docker 내부에서 /es로 인식시켜 실행 바이너리 및 데이터는 시놀로지에 직접 기록되게끔 구성해 놓았다. 이부분은 나중에 ES 업그레이드 시 용이하다.

터미널 확인

아래와 같이 터미널 기능을 이용하여 간편히 터미널을 사용 할 수 있다. 시놀로지 관리자 자체가 웹사이트로 구성되어 있어 docker 터미널도 웹 브라우저만 사용가능하면 어디서든 접근 가능하다.

docker 인스턴스 관리

아래와 같이 사용하는 docker들을 On/Off 할 수 있다.

간혹 ES 인스턴스가 말썽일 때 On/Off 기능을 이용하여 장비 재시작 효과를 발생시킨다.

[외부 접속]

외부 접속은 아래와 같이 가능하다. 보안에 대한 부분은 따로 고민해서 적용하면 된다.

아래와 같이 외부에서 젠킨스에 접속 가능하다.

키바나도 접속하여 ES개발이나 확인을 할 수 있다.

필요시 ES도 CURL을 통해서 확인 할 수 있어 유용하다.

[결론]

시놀로지 NAS라는 장난감으로 나만의 유튜브를 구축하여 N스크린으로 동영상을 감상하고 나만의 EC2를 구축하여 개발환경을 만들어 더 실력을 늘일수 있다는게 글에서 말하고자 하는 점이다.