전체 글
처음 사용해보는 AWS Lambda
2019.09.06AWS Lambda는 AWS에서 제공하는 서버리스 컴퓨팅 서비스입니다. AWS에서는 Lambda를 이렇게 설명합니다. AWS Lambda는 이벤트에 대한 응답으로 코드를 실행하고 자동으로 기본 컴퓨팅 리소스를 관리하는 서버리스 컴퓨팅 서비스입니다. AWS Lambda를 사용하여 사용자 지정 로직을 통해 다른 AWS 서비스를 확장하거나, AWS 규모, 성능 및 보안으로 작동하는 자체 백엔드 서비스를 만들 수 있습니다. AWS Lambda는 Amazon API Gateway를 통한 HTTP 요청, Amazon S3 버킷에 있는 객체에 대한 변경 사항, Amazon DynamoDB의 테이블 업데이트 또는 AWS Step Functions의 상태 전환과 같은 다양한 이벤트에 대한 응답으로 코드를 자동 실행할 수..
처음 사용해보는 Sequelize
2019.09.02Sequelize는 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..
Ubuntu에 MySQL 설치하기 (a.k.a. MySQL 초기 설정)
2019.01.22MySQL은 다양한 App과 서비스에서 사용하는 RDBMS입니다. Ubuntu에 설치하는 과정을 기록도 겸할겸 간략하게 명령어 위주로 정리해봅니다. 정말 많이 급하게 설치를 진행해야 한다면 아래 검은 바탕의 명령어와 굵은 글꼴만 읽으면 됩니다. MySQL 설치 패키지 관리자를 최신화 한 후 MySQL을 설치합니다. sudo apt-get update sudo apt-get install mysql-server 보안 관련 설정 다음 명령어를 통해 보안 관련 설정을 진행합니다. mysql_secure_installation 외부 접속 허용 만약 현재 기기의 외부에서 접속이 필요하다면 외부 접속 관련 설정을 진행해야 합니다. 1. 외부 접속 계정 생성 ##_사용자ID_##를 외부에서 접속할 사용자 ID로, #..
AWS EC2 Instance Initialzer for Ubuntu
2019.01.22AWS 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
2018.12.26Jetronome 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
2018.12.26Jetronome 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..
AWS DNS 오류: 늦은 리뷰 (리눅스 DNS 서버 추가법)
2018.12.07열흘도 더 된 사건이지만 나중에 참고할 일이 생길 것 같아서 남겨둔다. 오전 8시 반 쯤에 운영 중인 대부분의 서버에서 오류가 발견되었다. 문제는 도메인이야, 이 멍청아 Express.js 서버(A)에서 외부 자원(B)을 불러올 수 없다는 오류를 내고 있었다. 도메인에 대한 IP를 조회하지 못하는 문제였다. 일반적인 상황에서라면 500이나 Request Timed Out이 발생하는게 맞을터였다. 이상한 조짐을 느끼고 ping을 시도했다. 최근에 도메인 관련 작업을 수행하지도 않았는데? AWS Route53에 등록된 정보도 이상이 없었다. 문제 원인을 분리해내기 위해 아래를 수행했다. 1. A의 인스턴스에서 DNS Cache 비우기: 동일 오류 발생 2. 다른 머신(로컬)에서 B로 접속 시도: 성공 3. ..
Google Chrome이 localhost를 https로만 접속하는 경우
2018.10.11최근 Google Chrome을 업데이트 한 이후로http://localhost로 접속을 시도하더라도강제로 https://localhost로 전달(Redirect)되는 경우가 발생합니다. 물론 로컬에서 작업을 하더라도 SSL로 연결을 보호하는 것이 최선이겠지만,모든 개발을 SSL로만 할 수는 없습니다. Google Chrome이 강제로 리다이렉트 하지 않도록 설정하는 방법을 아래에 기록합니다. 1. 설정 페이지로 이동- Google Chrome의 주소창에 다음 주소를 입력합니다: chrome://net-internals/#hsts 2. 보안 정책 삭제- 해당 페이지의 가장 아래에 있는 Delete domain security policies에 localhost를 입력하고 Delete버튼을 클릭합니다. 3..
Node.js App 실행을 스케줄링 하기
2018.04.20컴퓨터의 장점은 반복 작업을 불평 없이 약속된 시간에 수행한다는 것입니다. Node.js로 구현한 App 역시 마찬가지로 지정된 시간마다 실행되도록 할 수 있습니다. 이번 포스트에서는 *nix(Linux, MacOS) OS를 기준으로 Node.js App을 스케줄링하는 두가지 방법을 공유합니다. Cron? *nix 시스템에는 기본적으로 cron scheduler가 탑재되어 있습니다. cron 표현식에서 각 시간은 공백문자 한 개로 구분하며 아래와 같이 작성합니다. # 분 시 일 월 요일 명령 0 10 * * * /sendMail.sh # 매일 오전 10시 정각에 sendMail.sh를 실행 30 14 * * 0 /nap.sh # 매 일요일 오후 2시 30분에 nap.sh를 실행 이 글에서는 Cron 자체..
Node.js App을 Deamon처럼 활용하기
2018.04.18Node.js 응용프로그램을 실행하는 방법은 일반적으로 node 혹은 npm 명령어입니다. 이 때 별개의 터미널을 이용해 실행하거나, OS의 스케쥴러를 이용하죠. 하지만 웹 서비스와 같이 항상 실행되어야 하는 App도 있습니다. 이런 경우 별도의 터미널로 실행되어 있을 때 실수로 터미널을 종료하기라도 하면 치명적일 수 있습니다. PM2는 Node.js App을 백그라운드에서 실행해줘서 이런 상황을 방지해 줄 수 있습니다. PM2 KeyMetrics에서 제공하는 PM2의 PM은 Process Manager라고 합니다. 이름에서 볼 수 있듯이 Node.js 프로세스를 관리해주는 프로그램이죠. PM2의 홈페이지에서는 IBM, MS, PayPal 등의 업체가 PM2를 이용하고 있다고 합니다. PM2를 이용하면 ..
청약조회긱
2018.04.12청약조회긱 서울에서 예정 중인 혹은 진행 중인 주택 청약을 빠르게 조회해주는 챗봇입니다.Telegram Bot API를 이용하여 간단하게 구현되었습니다. :: 사용 언어- node.js :: 주요 라이브러리- cheerio: 웹페이지 분석- cron: 스케줄러- telegraf: Telegram Bot API 사용 지원 :: 주요 기능- 청약 조회 + 예정 중인 혹은 진행 중인 주택 청약을 조회하여 출력합니다.- 청약 정보 구독 + 구독을 신청한 경우 예정된 시각에 자동으로 새 정보를 발송합니다. :: 사용해보기- 이 링크를 누르면 Telegram을 통해 사용해 볼 수 있습니다. :: 스크린샷
Node.js로 가상호스트 이용하기
2018.04.12한 서버에서 여러 웹 서비스를 운용해야 하는 경우가 있습니다. 단순히 도메인이 여러개라서 한 도메인으로 사용자를 전달한다거나, 사용자 페이지와 백 오피스를 함께 운용할 수도 있지요. 이런 경우 Apache나 Nginx를 이용한다면 설정 파일을 이용해서 VirtualHost를 활용하곤 합니다. 만약 모든 서비스가 Node.js로 운용되고 있다면 굳이 Apache나 Nginx를 찾지 않고도 VirtualHost를 사용할 수 있습니다. 사전 준비: hosts 파일 편집 hosts 파일은 로컬에 보관하는 일종의 전화번호부입니다. DNS 동작에서의 hosts 파일 역할에 대한 자세한 설명은 다음 링크에서 확인하실 수 있습니다: hosts 파일 - 생활코딩 hosts 파일은 아래 위치에서 찾을 수 있습니다. - W..