최근 AWS Lambda(이하 Lambda)를 활용해 API Backend를 개발하고 있습니다. 처음하는 일은 늘 어려운 법이지만 이틀 내내 어두운 터널에서 벽을 짚으며 걷는 느낌을 줬던 이슈를 정리해봅니다. 만약 지금 바로 AWS Lambda에 고정 IP를 연결하는 방법이 필요하다면 이 글을 참고해주세요. 만약 수동으로 생성하고 싶거나, 기존 VPC를 활용해서 구성해야 한다면 이 글을 참고해주세요. DB에 접속해야 되는데… 가장 기본이 되는 로그인 기능 구현부터 막혔습니다. DB로부터 사용자 정보를 불러와야하는데 DB에 접속할 수 없었습니다. 원인은 금방 찾을 수 있었는데, DB 서버에 설정한 방화벽에서 차단되기 때문이었습니다. 몇 가지 방법을 검토했지만 공통적으로 VPC 설정이 필요했습니다. 그래서 ..
문서를 작성하는 것은 생각보다 시간이 드는 일입니다. 내용을 정리하고, 구조화하고, 문장을 쓰고, 서식도 다듬어줘야죠. 하지만 Markdown(마크다운) 문법을 활용하면 이 과정을 상당히 간소화 할 수 있습니다. 글의 구조를 짜고, 문장으로 써내리기만 하면 됩니다. 이번 글에서는 Markdown의 특징과 문법을 공유합니다. Markdown? Markdown을 소개하기에 앞서 먼저 Markup(마크업)을 이야기해볼까 합니다. 개발을 간단히라도 배웠던 사람이라면 HTML 문법을 배우셨을겁니다. HTML은 대표적인 Markup언어입니다. 왜 Markup이라고 하는지는 문법을 보면 이해할 수 있습니다. Hello, World! 위 문법과 같이 내용이 Mark로 둘러싸인 형태를 가지고 있기 때문입니다. Markd..
지난 글에서 Jekyll을 설치하고 실행하는 단계까지 진행했습니다. 이번에는 테마를 적용하고 새로운 글을 작성하는 방법을 확인해보겠습니다. 테마 적용하기 처음 Jekyll을 실행하면 심플한 기본 테마의 페이지를 보여줍니다. 기본 테마도 이미 충분히 훌륭합니다. 만약 기본 테마가 맘에 든다면 이번 단계는 건너 뛰어도 됩니다. 하지만 새로운 테마를 적용하고 싶다면, 아래 몇 가지 단계를 거쳐서 손쉽게 테마를 변경할 수 있습니다. 테마 다운로드하기 1. GitHub에는 훌륭한 여러 테마가 공개되어 있습니다. jekyll-theme 등의 토픽을 확인해서 맘에 드는 테마를 고릅니다. 2. 맘에 드는 테마를 골랐다면 소스코드를 다운로드합니다. 조금 더 고급스럽게 작업하고 싶다면 Repository를 Clone하는 ..
https://username.github.io의 주소를 가진 블로그를 보신 적이 있을겁니다. 이런 블로그들은 GitHub Pages 서비스를 이용해 무료로 생성된 것들입니다. 이번 글에서는 간단하게 GitHub에 블로그를 만들어서 운영하는 방법을 알아봅니다. GitHub Pages 생성하기 Repository 생성 먼저 username.github.io 형태의 Repository를 생성합니다. 예를 들어 GitHub ID가 jETA-Kor라면 jeta-kor.github.io로 이름을 지어주면 됩니다. Hello, World! 출력 1. 아래 이미지의 빨간색으로 표시해놓은 버튼을 눌러서 새 파일 생성을 진행합니다. 2. 파일 이름과 파일 내용을 입력합니다. 3. Commit Log를 작성하고 Commi..
macOS는 기본적으로 Ruby가 설치되어 있습니다. 하지만 여러 이유로 다양한 버전의 Ruby를 설치해놓고 그 때 그 때 버전을 변경하며 사용하거나, 가상환경을 설정해야 할 수 있습니다. macOS에서 rbenv를 이용해 Ruby 버전을 관리하는 법을 알아봅니다. homebrew를 이용해 rbenv 설치 $ brew update # Homebrew 업데이트 $ brew install rbenv ruby-build # rbenv, ruby-build 설치 homebrew가 설치되지 않은 경우 이 링크에서 설명하는 방법으로 설치할 수 있습니다. .bash_profile 수정 .bash_profile (혹은 사용하는 터미널의 초기 환경 설정 파일)에 아래 명령어를 추가합니다. eval "$(rbenv ini..
AWS Lambda는 AWS에서 제공하는 서버리스 컴퓨팅 서비스입니다. AWS에서는 Lambda를 이렇게 설명합니다. AWS Lambda는 이벤트에 대한 응답으로 코드를 실행하고 자동으로 기본 컴퓨팅 리소스를 관리하는 서버리스 컴퓨팅 서비스입니다. AWS Lambda를 사용하여 사용자 지정 로직을 통해 다른 AWS 서비스를 확장하거나, AWS 규모, 성능 및 보안으로 작동하는 자체 백엔드 서비스를 만들 수 있습니다. AWS Lambda는 Amazon API Gateway를 통한 HTTP 요청, Amazon S3 버킷에 있는 객체에 대한 변경 사항, Amazon DynamoDB의 테이블 업데이트 또는 AWS Step Functions의 상태 전환과 같은 다양한 이벤트에 대한 응답으로 코드를 자동 실행할 수..
Sequelize는 Node.js에서 가장 많이 사용되는 ORM입니다. 이번에 처음 Sequelize를 사용해보면서 학습한 내용을 저와 같이 처음 사용하시는 분들을 위해 정리해서 공유합니다. Sequelize에 대해서 공식 홈페이지에는 아래와 같이 소개하고 있습니다. Sequelize는 Postgres, MySQL, MariaDB, SQLite, Microsoft SQL Server를 지원하는 Promise 패턴 기반의 Node.js ORM입니다. Solid 트랜잭션, 관계 설정, 즉시 로딩, 지연 로딩, 읽기 전용 복제본 등을 포함해 많은 기능을 제공합니다. (원문: Sequelize is a promise-based Node.js ORM for Postgres, MySQL, MariaDB, SQLit..
MySQL은 다양한 App과 서비스에서 사용하는 RDBMS입니다. Ubuntu에 설치하는 과정을 기록도 겸할겸 간략하게 명령어 위주로 정리해봅니다. 정말 많이 급하게 설치를 진행해야 한다면 아래 검은 바탕의 명령어와 굵은 글꼴만 읽으면 됩니다. MySQL 설치 패키지 관리자를 최신화 한 후 MySQL을 설치합니다. sudo apt-get update sudo apt-get install mysql-server 보안 관련 설정 다음 명령어를 통해 보안 관련 설정을 진행합니다. mysql_secure_installation 외부 접속 허용 만약 현재 기기의 외부에서 접속이 필요하다면 외부 접속 관련 설정을 진행해야 합니다. 1. 외부 접속 계정 생성 ##_사용자ID_##를 외부에서 접속할 사용자 ID로, #..
AWS EC2 인스턴스를 처음 실행 하면 몇 가지 설정을 진행해야 합니다. Ubuntu 인스턴스를 몇 번 설정해보니 공통적으로 수행해야 하는 설정이 있어서 배치 파일로 만들어뒀습니다. init_ubuntu.sh clear touch init_std.log echo ":: AWS EC2 Instance Initialzer for Ubuntu" echo " " echo " " # node 설치 echo "::::::::::::::::::::::::::::::" echo ":: Installing node.js v8... ::" echo "::::::::::::::::::::::::::::::" curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash - &..
Jetronome Client Jetronome Client는 Application의 상태를 모니터링 할 수 있는 가장 간단한 방법입니다. License: MIT License Features- 주기적 실행 여부 확인 - 실행 중인 PC의 자원 확인 Install- 점검할 Node.js 프로젝트에서 다음 명령을 실행합니다. npm i --save jetronome-client Usage초기화와 함께 신호 발생 시작require('./jetronome-client').init({ name: 'Dummy App', // Application Name (required) description: 'This is a test application.', // Description (required) server: ..
Jetronome Server Jetronome Server는 운용 중인 Application의 상태를 한 곳에서 확인할 수 있는 가장 간단한 방법입니다. License: MIT License Features- 주기적 실행 여부 확인 - IP를 기준으로 한 App 목록 그룹화 - 신호 누락 시 알림 - 테스트 API 접속 실패 시 알림 Install - 서버로 사용할 Node.js 프로젝트에서 다음 명령을 실행합니다. npm i --save jetronome-server Usage 초기화 require('jetronome-server')({ alertFn: (name, msg) => { // 알림 발생 시 실행될 함수. console.error(name); console.error(msg); }, por..
열흘도 더 된 사건이지만 나중에 참고할 일이 생길 것 같아서 남겨둔다. 오전 8시 반 쯤에 운영 중인 대부분의 서버에서 오류가 발견되었다. 문제는 도메인이야, 이 멍청아 Express.js 서버(A)에서 외부 자원(B)을 불러올 수 없다는 오류를 내고 있었다. 도메인에 대한 IP를 조회하지 못하는 문제였다. 일반적인 상황에서라면 500이나 Request Timed Out이 발생하는게 맞을터였다. 이상한 조짐을 느끼고 ping을 시도했다. 최근에 도메인 관련 작업을 수행하지도 않았는데? AWS Route53에 등록된 정보도 이상이 없었다. 문제 원인을 분리해내기 위해 아래를 수행했다. 1. A의 인스턴스에서 DNS Cache 비우기: 동일 오류 발생 2. 다른 머신(로컬)에서 B로 접속 시도: 성공 3. ..