분류 전체보기

오늘의 주제는 Github와 Nginx를 통해 만들어진 무중단 배포 시스템이 정말로 무중단일까?이다. 보통 Nginx로 프로그램을 배포시키고, 반영할 개선사항이 존재하면 Github를 통해 반영시킨 후, pm2를 통해 reload를 하는 방식을 사용한다. 하지만 반영하는 과정에서 서비스가 짧게라도 중단되지 않을까? 진짜로 무중단이 맞을까? 하는 의문이 들었다. 해당 질문은 이직 과정에서 있었던 실무면접에서 들었던 질문으로 면접 당시에는 정답을 모르고 면접 이후에 찾아 알게된 것을 바탕으로 글을 써보려고 한다. ( 그런데 붙었다^_^ 이유가 뭘까.. ) 먼저 pm2를 이용한 무중단 배포관리에 대해 이야기해보자. NodeJS의 프로세스 매니저 PM2 NodeJS는 기본적으로 싱글스레드이다. 멀티코어 시스템을..
자바 스크립트에서는 비동기적인 프로그램을 실행할 수 있는 기능이 있습니다. Promise 및 Async/Await으로 비동기 프로그램을 제어해 봅시다. setTimeout 작업을 예약 비동기로 동작 동시에 여러 작업이 가능함. 흐름이 예측 불가함 시간이 걸리지만 기다리기만 하면 되는 작업 ajax (XMLHtmlRequest 객체를 사용함) Fetch API Node.js (모든 것이 비동기) 비동기 작업의 사용성 문제 콜백 지옥 Promise 비동기 작업 단위 비동기 작업들을 관리 내용은 실행되었지만 결과를 아직 반환하지 않은 객체 3가지 상태 (pending / fulfilled / rejected ) New Promise()를 하는 순간 할당된 비동기 작업이 시작됨 (일단 배를 떠나보냄) Promi..
MongoDB와 PostgreSQL 모두 사용해보면서 느꼈던 차이점을 정리해보았다! 크게 보면 RDB(Mysql, oracle, PostgreSQL)과 NoSql(mongoDB)로 나눌 수 있었고, 특징을 나누어 보았다. RDB - 관계형 데이터베이스 엑셀 시트처럼 정해진 번호의 칸 안에 내용을 쌓아간다. 내용을 찾아 정렬하는 속도가 매우 빠름 2차원의 테이블 형태 데이터 상관관계에서 개체 간의 관계를 표현 상호 관련성을 가진 테이블 집합 만들고 이용하기 쉬움, 확장이 쉬움 여러 개의 테이블을 조합해 원하는 데이터를 찾아옴 트랜잭션, ACID 데이터 구조가 명확하며 변경될 여지가 없으며 명확한 스키마가 중요한 경우 사용 중복된 데이터가 없어(데이터 무결성) 변경이 용이하기에 관계를 맺고 있는 데이터가 자..
Rails에는 페이지네이션을 쉽게 구현할 수 있도록 하는 Kaminary gem이 있다. 레일즈 특성상 일일히 페이지값, 전체페이지, 현재페이지.. 등을 넘겨주던 NodeJs개발자에겐 신박했지만.. 아쉽게도 특정 포맷을 벗어났더니 에러가 발생했다. 에러는 아래와 같다. 에러 상황 Kaminary에서 제공하는 pagination 페이지를 클릭했을 경우 기존 action으로 넘어가도록 설계되어 있다. 하지만 나는 ajax를 통해 동적으로 렌더링하고 싶은 뷰가 있었고 그 뷰는 각각의 페이징이 필요하다. 동적 뷰를 나타내기 위해서 나는 액션에서 js.erb를 response하는 방식을 사용했는데 js 렌더링시 에러가 발생했다. (아래는 js로 뷰 렌더링했던 경험 글) https://soohey.tistory.c..
soohey
'분류 전체보기' 카테고리의 글 목록 (12 Page)