개발을 파헤치다/쉽게 풀어쓴 개념(9)
-
지속적 통합(Continuous-Intergration)과 Blue-Green 배포 전략이란?
CI(Continuous-Intergration)가 왜 필요할까? 수 많은 서비스들이 생겼다 사라지는 현대 사회에서 살아남기란 쉽지가 않습니다. 생존하기 위한 기본기 중 하나는 바로 고객들의 피드백을 최대한 빨리 종합하여 서비스에 반영하는 것입니다. 고객들의 피드백을 무시하고 살아남은 서비스는 매우 찾아보기 힘듭니다. 하지만 개발에 있어서 실제 운영중인 서비스에 수정을 재빨리 적용하는 것은 큰 부담이 따릅니다. 예를 들어, 개발 서버 환경에서 코드가 제대로 돌아가는 것을 확인했습니다. 그리고 버전관리 도구(e.g. Git)를 활용하여 운영중인 실서버에 적용을 했습니다. 하지만 갑자기 에러가 발생하고 서버가 죽어버렸습니다. 얼마나 끔찍한 상황인지는 서비스를 운영해 본 개발자만이 알 수 있을거라 생각합니다...
2018.06.01 -
서버에서 클라이언트로 푸시하는 방식에 대하여
웹 어플리케이션은 태생이 Client - Server 모델을 기반으로 만들어졌습니다. 클라이언트가 필요한 리소스를 서버에 요청하면 서버는 그에 대한 응답을 돌려줍니다. 이것이 기본적인 Client - Server 모델의 동작 방식입니다. 이 모델에서 항상 새로운 요청을 보내는 쪽은 클라이언트입니다. 그렇기 때문에 서버에서 클라이언트에게 먼저 데이터를 보낼 방법이 없었습니다. 이 문제를 해결하기 위해서 푸시 방식(Push)이 고안되었습니다. 푸시 방식은 서버에서 클라이언트에게 정보를 먼저 보내주는 전달 방식을 의미합니다. 클라이언트가 서버로부터 원하는 정보를 계속 요청하는 방식을 Pull 방식이라고 합니다. 스마트폰의 푸시 알람, 맞춤형 컨텐츠 이메일 알람 서비스가 모두 서버에서 클라이언트로 정보를 보내는..
2018.01.16 -
커널을 파헤치다
커널(Kernel)은 무엇인가? 커널은 운영체제의 핵심적인 부분을 의미합니다. 우리가 가장 많이 사용하는 윈도우 10같은 운영체제에는 무수히 많은 프로그램들이 설치되어 있습니다. 이를 응용 프로그램이라고 지칭합니다. 사실 컴퓨터는 몇 가지 전자기판이 합쳐진 기계에 불과합니다. 이 전자기판위에서 우리가 일상적으로 사용하는 응용 프로그램들이 실행되기 위해서는 생각보다 많은 작업이 이루어져야 합니다. 프로그램은 명령어의 집합이라고 생각할 수 있습니다. “이 상황에서는 이렇게, 저 상황에서는 저렇게 동작하라”라는 명령어를 모아놓은 것이 프로그램인 것입니다. 따라서, 컴퓨터의 핵심 기능은 이 명령어들을 실행하는데 있다고 해도 과언이 아닙니다. 그럼 명령어는 누가 실행하나요? 바로 CPU입니다. CPU는 산더미처럼..
2018.01.08