상세 컨텐츠

본문 제목

DevOps 파이프라인 구성_1(Nodejs로 마이크로 서비스 앱 제작)

클라우드+마이크로서비스

by 김일국 2019. 6. 9. 16:00

본문

작업1: 노드js 와 Mysql 디비를 사용해 이미지 업로드 및 변환binary데이터를 DB에 저장.(실제 물리적파일이아나고, DB에 저장됨)

         위 Nodejs 앱(마이크로서비스)만 제작 및 작동 확인 > 쿠버네티스로 도커 이미지 만들고, 배포하는 하는 작업은 다음 포스트에서...

마이크로서비스 앱 사용법:

 - 이미지 업로드:

  ~/app_node/imagini $> curl -H 'Content-Type: image/png' --data/binary @example.png http://localhost:3000/uploads/test.png

 - 업로드된 이미지 확인

  ~/app_node/imagini $> curl --head http://localhost:3000/uploads/test.png

 - 이미지 조작(웹브라우저에서 확인)

  http://localhost:3000/uploads/test.png?blur=10 (블러효과처리)

 - 업로드된 이미지 삭제(Db에서 삭제)

  ~/app_node/imagini $> curl -v -X DELETE http://localhost:3000/uploads/test.png

 - 업로드된 이미지 통계 확인(전체 이미지수,전체 이미지 크기, 이미지를 마지막으로 업로드한 시각, 전체 앱 서비스가 실행된 시간)

  ~/app_node/imagini $> curl  http://localhost:3000/stats


DevOps 파이프라인 하드웨어 구성(서버 1대로 도커 빌드, 미니kube 클러스터에 배포및 pods(컨테이너)관리)

1. 프라이빗 클라우드 서버: 우분투+미니쿠보(쿠버네티스)

   - 이전 포스트 참조 ( 워드프레스 웹사이트 도커기반 쿠버네티스로 프로비저닝 하기_1 )

2. 개발 PC: 위 클라우드 서버에서 App개발, 내용: 노드js(Express)와 MysqlDB로 이미지변환 및 DB저장하기 App. 

   - 지난번 구름IDE에서 작업한 노드js 개발App 이 있으나, 구름IDE에는 도커를 설치할 수 없어서... 위 서버에서 개발하기로 함.

   - 개발툴: Visual Studio Code 설치( 기술참조: https://shshsh.tistory.com/132 )

      내역: 마이크로소프트 사이트 https://code.visualstudio.com/ 에서 데비안계열 deb 설치파일 다운받은 후 아래 데비안패키지 명령으로 설치하면 끝

      ~/ $ sudo dpkg -i code_1.35.0-1559611369_amd64.deb

   - 개발언어: Node.js 8 이상 설치> nvm로 설치

      > 기술참조: https://itstory.tk/entry/Ubuntu-1604-nodejs-%EC%99%80-npm-%EC%84%A4%EC%B9%98 )

      내역:

      ~/$> mkdir app_node (폴더 생성 후 이동)

      ~/app_node$> sudo apt-get install build-essential libssl-dev

      ~/app_node$> curl -sL https://raw.githubusercontent.com/creationix/nvm/v0.31.0/install.sh -o install_nvm.sh

      ~/app_node$> bash install_nvm.sh (설치)

      ~/app_node$> source ~/.profile (nvm사용)

      ~/app_node$> nvm ls-remote (설치가능한 노드버전 확인)

      ~/app_node$> nvm install 10.15.3 (이전에 실행한 구름IDE와 같은 버전 설치)

        여러 버전의 Node.js를 설치했다면 다음과 같이 특정 버전으로 변경하여 사용할 수 있습니다. ( $> nvm use 6.0.0 )

      ~/app_node$> node -v (또는$> nvm ls 설치확인. npm 6.4.1 까지 한꺼번에 설치 됩니다.)

   - DB설치: Mysql 설치(root사용자 암호지정: 기술참조: https://all-record.tistory.com/183#recentComments )


   - 실전! Node.js 마이크로서비스 개발 책 4장 소스 참조 imagini.tar (내용수정은 아래 내용참조)

    출처:위키북스(내용수정은 아래 내용참조)

   - ~/app_node/ 위 imagini.tar 파일 다운받음.

   - ~/app_node/$> tar -xvf imagini.tar (자동으로 imagini 폴더가 만들어지고 압축이 풀림)

   - 프로젝트명: imagini (Express:package.json + Mysql:settings.json)

   -  ~/app_node/imagini $> settings.json (DB접속설정 root:root@... 에서 root(아이디):root(암호) 를 본인이 설치시 입력한 root암호로 변경)

   -  ~/app_node/imagini $> package.json (main 시작파일 index.js 를 imagini.js로 변경)

   - ~/app_node/imagini $> npm install (패키지의존성파일들설치. package.json 파일이 있으므로 npm init 초기화 실행은 건너띈다.)

   - ~/app_node/imagini $> node imagini.js 로 실행결과(아래)

        db: ready

        app: ready

   - 노드App종료 2가지방법( $ jobs 로 현재 러닝중인 앱 확인가능)

     Ctrl+C 키로 앱종료.

     또는 노드앱이 백그라운드로 실행시($ node imagini.js & ) $ ps aux | grep node 로 프로세스ID숫자확인 후 $ kill -9 14939 로 중료.


*앱결과확인을 위한 DB툴 설치:

 - 디비버(아파치라이센스2: 워크벤치와 같은 무료 DB관리툴) 우분투용 다운로드: https://dbeaver.io/ (이클립스 기반으로 만들어짐)
   우분투(데이안계열) Deb설치파일 실행이 되지 않을때, 아래와 같은 명령어로 설치 가능
   $ sudo apt-get install gdebi
   $ sudo dpkg -i downloaded.deb
   $ sudo apt-get -f install


작업결과(아래 : Mysql디비에 접속해서 이미지test.png 레코드가 등록된 것을 확인-上, 브라우저에서도 확인-左下, 노드App실행-右下)

Ps. 위 디비버 설치중에 java 의존성때문에 open-java가 설치됨. javac 컴파일러가 설치되지 않아서 open-jdk 설치

$ sudo apt-get install openjdk-8-jdk

결과확인: $ java -version | $javac -version

imagini.tar
0.06MB

관련글 더보기

댓글 영역