본문 바로가기
Development/Toy Projects

[진행1] 안써본거 위주로 써보기 위한 토이 프로젝트

by Nahwasa 2021. 12. 22.

  계획 단계 (0. [계획] / 1. [계획수정]) 이후 개념이 잡히지 않은 상태에서 거의 제로 상태에서 시작해본거라, 시행착오가 많았다. 꽤 열심히 진행했지만 생각보다 더뎌서 좀 마음이 급하긴하다. 부족한 부분에 대해 몰랐으면 괜찮았는데, 이미 알게된 이상 빨리 개념잡히고 싶다. 3~4일에 걸쳐 일단은 코드를 짜기보다는 기반 기술 및 환경을 잡아보며 토이프로젝트를 진행한 중간결과에 대해 작성해본다.

 

  진행하며 모든 과정은 노션에 작성해두었다. 다만 시행착오가 많았기에 잘 안되던것도 많아 바로 여기에 옮길 순 없을 듯하고, 정리하여 토이 프로젝트와 별개의 포스트로 깔끔하게 정리해서 작성할 듯 하다. 이 포스트에서는 진행하면서 해본걸 작성하고 느낀점 위주로 작성할 것 같다. 어차피 볼 사람 없을테니 스스로 나중에 보라고 작성!

 

 

1. 맥에서 개발해보기

  맥을 실행할 수 있는 HW가 없었기에 vmware에 가상으로 설치하여(aka 해킨토시) 해보려 했다. zshell 및 oh my zsh, powerlevel10k 등을 설치하며 상당히 맘에 들었는데 결정적으로 도커 실행이 불가했다... 아무리 구글링해봐도 해결할 수도 없고, 해킨토시로 실행 성공한 결과도 찾지 못했다. 맥을 경험해보는 것 보다 도커가 더 중요했기에 맥을 포기하기로 했다.

 

 

2. 맥 대신 기존처럼 윈도우에서 개발! 대신 WSL로 리눅스를 로컬로 설치해봄

  맥은 어쩔수 없이 경험해보지 못하게 됬지만, 대신 WSL (Windows Subsystem for Linux)을 윈도우와 연동하여 사용해보기로 했다. WSL도 마찬가지로 처음으로 개념이었으므로 경험이 없었다. 여러 글들을 보면서 진행했다. 진행 과정을 대략 다음과 같다. 메인 개발환경은 당장은 건드리고 싶지 않았으므로 윈도우 환경위에 가상으로 윈도우를 다시 올리고 그 위에서 진행했다. (윈도우 정품 인증 워터마크는 그래서 박혀있음!)

 

A. 윈도우 Terminal 설치

 

B. WSL 설치

 

C. 우분투 설치

 

D. WSL2로 업그레이드

 

E. 맥을 세팅할 때 zshell 및 oh my zsh, powerlevel10k 프롬프트가 상당히 마음에 들었었다. 따라서 똑같이 세팅했다.

 

F. 폰트의 경우 Meslo를 사용했다. 그 후 Nerd 패치된 Meslo 폰트의 존재를 알게되어 그걸로 변경했다.

 

G. 인텔리제이를 IDE로 선호한다. 개념이 별로없었어서 리눅스에 인텔리제이를 설치하고 윈도우에서 실행해야 윈도우지만, 로컬에서 서버를 돌려볼 때 리눅스에서 돌릴 수 있을꺼라 생각했다. 따라서 그렇게 해봤다.

 

여기까지 진행하여 다음과 같이 환경이 갖추어졌다. 이 스샷 찍을 땐 몰랐는데, 현재는 더 쓰다보니 참 신기하다. 분명 윈도우 시스템 위에 리눅스를 올린건데 파일시스템이 공유된다. 따라서 이렇게 리눅스에 인텔리제이 올리고 윈도우에 vcxsrv를 설치하여 윈도우에서 GUI로 실행하는건 아무 의미가 없을듯하다. 이후 '5' 에서 윈도우에서 리눅스 터미널을 사용하고 파일시스템은 공유하므로 로컬 리눅스에서 테스트를 진행한다.

 

 

3. 우선 제일 개념이 안잡혔던 도커부터 해봄! vscode는 덤으로.

  도커가 제일 개념이 안잡혔었다. 그래서 무작정 도커부터 해보려고 유투브 등 예제를 중심으로 여러 개의 예제를 일단 무작정 따라해보기를 했다. docker를 경험해보면서 봤던 한 유투브 영상의 경우 내가 주로 사용하던 자바가 아니라, 파이썬과 svelte라는 처음 들어본걸 사용했다. 예제를 따라하면서 오랜만에 vscode를 써보게 됬다.

 

  2년전 쯤 vscode를 한번 써본적이 있다. 텍스트 에디터 같은 간편한 사용성 자체는 좋았지만, 각 언어에 맞는 환경을 세팅하기가 너무 복잡했다. 현재도 vscode에 c와 c++ 환경은 잡아두고 있지만, 새로 설치한다면 다시 잡기가 힘들 것 같아 친해지지 않으려고 사용하지 않고 있었다. 오랜만에 다시 써본 vscode는 파이썬이 발견됬다고 플러그인만 설치하라고 한다. 알아서 잘 동작한다! 처음보는 svelte도 지가 알아서 잡더니 잘 된다;;

 

  그래도 젯브레인의 툴이 워낙 기능이 좋아 메인은 젯브레인의 IDE들로 사용할 것 같고, 또 자바 관련 프로젝트라면 인텔리제이보다 나은게 없다고 본다. 다만 이처럼 다양한 언어를 사용하는 프로젝트는 vscode도 엄청 좋은 듯 하다. 게다가 WSL이 기본적으로 지원되어 '2'에서 세팅해둔 WSL의 우분투가 알아서 잡혀서 터미널에서 바로 실행할 수 있다. vscode도 많이 발전한 듯 하니 한번씩 써봐야겠다. 

 

  이렇게 해보는 과정은 다음과 같다.

 

  vscode가 했다면 IntellJ가 못할리 없다! 인텔리제이에도 WSL에 올려둔 우분투 터미널을 실행해 윈도우와 리눅스의 경계를 허물어보기로 했었다. 생각보다 쉽게 성공했고, 위에서 해봤던 과정들을 인텔리제이로도 해봤다.

 

4. 메인으로 사용하는 스프링부트 서버도 도커로 올려보자! 

  '3'에서 실습해본 도커 예제들을 기반으로 예제 없이 스스로 스프링부트로 대충 만든 backend를 올려보려고 했다. 여기서 생각보다 시행착오가 많았다. 서버는 대강 도커에 jdk 11만 올릴 생각으로 웹쪽 없이, jar만으로 동작할 수 있도록 해봤었다. 간단하게 /msg?param=[A] 를 호출하면 현재 version과 GET으로 넣어준 param을 json으로 리턴해주는 간단한 테스트용 스프링부트 서버이다.

 

GitHub - NaHwaSa/toy-exp-new-things: toy project for experience newly( maybe only to me :/ ) stakcs

toy project for experience newly( maybe only to me :/ ) stakcs - GitHub - NaHwaSa/toy-exp-new-things: toy project for experience newly( maybe only to me :/ ) stakcs

github.com

 

  최종적으로 윈도우에서 작업한걸, 윈도우의 WSL에 올려둔 우분투(리눅스)를 인텔리제이 터미널로 연결하고 그걸 로컬로 해서 거기에 java 11을 docker에 올리고, 작성한 코드를 도커에 올려 이미지를 만들 수 있었다. 해당 결과는 다음과 같다.

 

 

5. 클라우드 서버에 한번 '4'에서 만든걸 올려보자!

  성격상 일단 프로젝트에서 기반 기술이 되는 건 어느정도 검증하고 시작하는 편이다. 그러니 이번엔 '4'에서 만든걸 도커 허브 (깃허브처럼 도커 이미지를 올릴 수 있다.)에 올리고, 로컬과 아무런 접점도 없는 클라우드에서 새로 생성된 CentOS 인스턴스에서 쉽게 사용할 수 있는지 해봤다.

 

  클라우드 인스턴스의 CentOS에 도커만 설치하고 도커 허브의 이미지를 run 하니 바로 된다!(라고 말하긴 했지만 사실 시행착오가 엄청 많았다... 이걸로 2일정도 걸렸다 ㅋㅋㅋ 결론적으로 보면 포트 관련된 사소한 실수였는데 도커와 관련된 문제라 생각해서 구글링 및 해결에 엄청 해맸다.)

 

  아무튼 결론적으로 윈도우에 올려둔 리눅스를 로컬로 도커를 실행해서 거기서 로컬테스트를 할 수 있었고, 로컬에서 만든 이미지를 도커허브에 올린 후 마찬가지로 인텔리제이에 SSH로 연결한 클라우드 CentOS 인스턴스에 쉽게 배포할 수 있음을 확인했다. 결과는 다음과 같다. '4'의 이미지와 별로 다르지 않아보이지만, 터미널이 SSH로 연결한 클라우드 인스턴스이고, 크롬으로 접속한 것도 클라우드 인스턴스이다.

 

 

6. 차후 진행 예정

  우선 이미지를 변경했을 때 쉽게 다시 이미지를 만들고, 클라우드 서버에서 쉽게 해당 이미지를 받아 콘테이너를 다시 실행 가능한지 확인해보려 한다. 추가로 컨테이너가 종료되면 로그파일도 컨테이너에 쌓일텐데 어떻게 가져올 수 있을지, 혹은 도커 컨테이너 외부의 클라우드 CentOS쪽에 로그정도는 빼낼 수 있는지 확인해보려 한다.

 

  일단 위의 내용만 확인하고, 리액트 책을 보면서 실습을 해볼 예정이다. 400페이지 정도니 딱히 막히지 않는다면 이번주내로 끝낼 수 있으면 좋겠다. (작성일 : 2021-12-22)

댓글