Docker와 DevOps에서 Serverless와 NoOps로의 여정

Summary “Docker와 DevOps에서 Serverless와 NoOps로의 여정"이라는 주제로 2017년 12월 06일에 W3C Conference에서 발표한 자료입니다. Docker와 DevOps에서 Serverless와 NoOps로의 여정 from Kyuhyun Byun 데모로 시연한 샘플코드는 아래와 같습니다. https://github.com/novemberde/serverless-webapp-demo References https://www.slideshare.net/KyuhyunByun1/docker-devops-serverless-noops https://onoffmix.com/event/119375 https://github.com/novemberde/serverless-webapp-demo

December 6, 2017 1 min

EC2 meta data에 대해 알아보기

Summary Amazon EC2의 설정을 자동으로 하기 위해선 인스턴스의 정보를 받아와서 설정할 수 있어야 한다. 예를 들어 특정 태그로 묶인 그룹에게 재가동시 소스코드 갱신과 서버 재가동의 명령어를 init.d에 등록했을 때 인스턴스 정보를 얻어온다면 개별적으로 인스턴스의 역할에 맞는 work load를 할당할 수 있을 것이다. meta-data 확인하기 Metadata에 대해서 찾아보니 위키백과에 아래와 같이 쓰여 있었다. 메타데이터(metadata)는 데이터(data)에 대한 데이터이다. 이렇게 흔히들 간단히 정의하지만 엄격하게는, Karen Coyle에 의하면 “어떤 목적을 가지고 만들어진 데이터 (Constructed data with a purpose)“라고도 정의한다. 가령 도서관에서 사용하는 서지기술용으로 만든 것이 그 대표적인 예이다. 지금은 온톨로지의 등장과 함께 기계가 읽고 이해할 수 있는 (Machine Actionable)한 형태의 메타데이터가 많이 사용되고 있다. 이 뜻을 인스턴스에 대입해보면, 인스턴스에 대한 데이터라고 생각해볼 수 있다. ...

December 6, 2017 2 min

Node js 라이브러리 및 유용한 자료

Summary Node JS의 라이브러리가 워낙 많다보니 자주쓰는 라이브러리를 정리해야될 필요성을 느꼈다. 그리고 재밌는 라이브러리를 리스트로 관리하지 않다보니 잊게 되었다. 발견할 때마다 정리하고 라이브러리의 용도에 맞게 분류하여 나중에 필요할 경우 바로 사용할 수 있도록 한다. 자주 쓰는 패키지 JavaScript utility library underscore lodash Year, month, date, time moment.js MarkDown highlight.js prismjs Ajax request request-promise superagent axios got Test mocha supertest chai should enzyme Logger morgan Task Runner & Bundler gulp grunt webpack webpack-dashboard Database ...

November 5, 2017 2 min

TypeScript로 Node.js Express 서버 개발하기

Summary 최근에 직방의 AWS Lambda 코드를 세미나에서 스쳐지나가는 것을 보았다. TypeScript로 짜여져 있었고 나중에 지속적인 프로젝트 관리적인 이점이 있을 것으로 생각이 되기 때문에 TypeScript로 프로젝트를 구성해보는 것을 정리해보기로 결심했다. node.js 프로젝트 생성하기 먼저 프로젝트를 생성한다. 기존에 npm과 nodejs가 설치되어 있다는 전제하에 시작한다. 만약 설치되어 있지 않다면 다음의 링크를 참고한다. https://nodejs.org/ko/download/package-manager/ $ mkdir node_typescript $ npm init -y 그리고 편의를 위해 사전에 설치되어 있어야 하는 패키지들이 있다. npx: global로 패키지를 설치하지 않더라도 프로젝트 내에서 사용할 수 있게 해준다. nodemon: 파일이 변화될 때마다 재실행해준다. typescript: typescript로 구성한 코드를 javascript로 트랜스파일링 해준다. npm-run-all: 여러 npm 실행 명령을 병렬로 실행할 수 있게 해준다. webpack: 요즘 각광받는 모듈 번들러 webpack-cli: webpack 명령을 사용하기 위한 CLI도구 source-map-support: typescript로 개발시 source-map을 지원해준다. @types/express: express 모듈에 대한 type을 지원해준다. $ npm install -g npx $ npm install --save-dev typescript ts-loader npm-run-all webpack @types/express nodemon webpack-cli $ npm install --save express source-map-support 기본 설정하기 다음과 같이 typescript에 대한 기본 설정을 한다. ...

October 22, 2017 4 min

유용한 OS 명령어 모음

Summary 개발을 하다가 명령어를 모두 기억하고 싶어도 잠깐 다른 업무를 하다가 다시하면 잊게되는 명령어들이 있다. 특히 OS 관련 명령어는 서버에 문제가 생겼을 때 사용하기 때문에 더욱 그렇다. 이번에는 자주 사용하지 않았으면 하는 명령어들을 정리해본다. OS 명령어 sar 리소스 사용 내역을 볼 수 있다. CPU 사용율 Idle 상태 상태 확인 I/O 의 사용율 메모리 사용율 $ sudo apt-get install sysstat $ sudo vi /etc/default/sysstat ENABLED="true" $ sar -u 1 5 Linux 4.4.0-1013-aws (ip-172-31-55-55) 10/22/2017 _x86_64_ (1 CPU) 05:52:57 AM CPU %user %nice %system %iowait %steal %idle 05:52:58 AM all 0.00 0.00 0.00 0.00 0.00 100.00 05:52:59 AM all 0.00 0.00 0.00 0.00 0.00 100.00 05:53:00 AM all 0.00 0.00 0.00 0.00 0.00 100.00 05:53:01 AM all 0.00 0.00 0.00 0.00 0.00 100.00 05:53:02 AM all 0.00 0.00 1.98 0.00 0.00 98.02 Average: all 0.00 0.00 0.40 0.00 0.00 99.60 top ...

October 22, 2017 7 min

Jenkins의 Blue ocean을 활용하여 배포 관리하기

Summary Jenkins는 CD/CI로 가장 알려진 도구이다. 이번에는 Jenkins 설정부터 시작하여 Pipeline으로 배포관리하는 과정을 정리해본다. Jenkins로 기본 설정하기 Jenkins를 Install Jenkins를 참고하여 설치한다. 설치하여 맨처음 접속하면 아래와 같은 화면이 나타난다. 다음의 명령어로 나온 텍스트를 입력한다. $ cat /var/jenkins_home/secrets/initialAdminPassword Customize Jenkins화면에서 여기서는 크게 설정할 필요없이 Install suggested plugins을 선택한다. 이후에 해당 플러그인을 설치하고 관리자 계정을 설정할 수 있다. 테스트를 위해 계정 정보는 다음과 같이 설정한다. 계정명: admin 암호: 1234 이름: admin 이메일 주소: 본인 이메일 주소 ...

October 21, 2017 2 min

EC2에서 Docker와 Docker-compose 사용하기

2017.06.08에 AWSKRUG에서 EC2에서 Docker와 Docker-compose 사용하기라는 주제로 발표했던 자료입니다.

October 20, 2017 1 min

CodeCommit 과 SourceTree 연동

Summary AWS CodeCommit은 AWS 완전 관리형 private git repository로 인데, 콘솔화면이 조금 부실해서 콘솔화면에서 repository 관리가 좋아보이진 않았다. SourceTree라는 Atlassian의 Git GUI tool로 AWS CodeCommit을 연동해보자. AWS CodeCommit에서 Git repository 생성하기 AWS CodeCommit화면으로 들어가서 Create repository를 하면 아래와 같은 화면이 나오는데 각 항목에 내용을 입력하자. Repository name: test Description: CodeCommit with SourceTree Local에 Git repository 설정하기 Repository를 생성하면 다음과 같은 화면이 나타난다. 주목해야 할 부분은 빨간 박스로 표시해놓았다. ...

October 20, 2017 2 min

Git pull all sub repository of certain directory.

Summary 여러 프로젝트를 동시에 진행하다보니 여러 repository를 한번에 갱신할 필요성이 생겼다. 일일이 하나씩 들어가서 git pull을 하려니 은근 귀찮았다. 그렇기 때문에 특정 디렉터리에 있는 all repositories(sub directories)에 대해서 git을 갱신해주는 코드를 개발하였다. 코드는 github에 공개되어 있으며 사용 방법은 아래와 같다. $ npm install -g git-puller Usage Usage: git-puller [options] Options: -V, --version output the version number -d, --directory [value] Target directory -r, --remote [value] Git Remote (default: origin) -b, --branch [value] Git branch (default: master) -h, --help output usage information examples: git-puller -d ./ # Current directory git-puller -d ../../_my_project # Other directory git-puller -d ./ -r origin -b master # Specify remote and branch gplr -d ./ # Current directory gplr -d ../../_my_project # Other directory gplr -d ./ -r origin -b master # Specify remote and branch References https://github.com/novemberde/git-puller

September 26, 2017 1 min

프로그래밍을 막 시작했을 때 만든 Dragon ball 게임

Summary When I first started programming, I went on a game project to familiarize myself with Javascript. I thought there would be a problem with the image license. If there’s a problem, please comment below. But, I decided to release this code on Github and hope to be helpful for juniors. Please enjoy this game. Thanks. References https://github.com/novemberde/js-game/tree/master/dragon_ball

September 26, 2017 1 min