본문 바로가기

분류 전체보기

(45)
컨테이너 vs 가상머신 [가상머신 ( Virtual Machine , VM )] 클라우드 서비스 형태로는 기본 엔진 (AWS : EC2 , GCP : CGE 등) 으로 제공된다. VM의 구현 방법에 따라 다르지만, 기본적으로 하이퍼바이저가 여러개의 VM을 띄우고 실행한다. 이때 중요한 것은 각 VM마다 독립된 실행 환경을 제공한다는 것이다. 즉 VM1과 VM2가 동일한 OS를 사용한다고 하더라도, 데이터는 물론이고 코드도 전혀 공유하여 사용하지 않는다. 이로 인해 각 VM마다 최소 GB 단위의 공간이 필요하며, VM 수에 비례해서 늘어나게 된다. 퍼포먼스 오버헤드도 상당하다. 하드웨어까지 가상화하는 전가상화(full-virtualization)이냐 그렇지 않은 반가상화(para-virtualization)이냐에 따라 다르지만,..
하이퍼바이저란? [ 하이퍼바이저 (Hypervisor) 란? ] 물리적 하드웨어에 설치된 소프트웨어 계층으로, 물리적 머신을 다수의 가상 머신(Virtaul Machine, VM)으로 분할할 수 있도록 해준다. 즉, 호스트 컴퓨터에서 다수의 운영 체제(operating system)를 동시에 실행하기 위한 논리적 플랫폼을 말한다. - 하이퍼바이저는 단일 하드웨어에서 여러 다른 가상 머신을 호스팅할 수 있는 프로그램이다. - 시스템에서 호스트 하드웨어의 프로세서, 메모리 및 리소스가 있는 것처럼 보이기 때문에 가상 머신 또는 운영 체제 각각은 자체 프로그램을 실행 할 수 있다. 이러한 리소스를 가상 시스템에 할당 하는 것이 하이퍼바이저이다. - 가상 머신에 설치된 운영 체제는 게스트 OS 라고 부르며 경우에 따라 인스턴스..
가상화란 ? 클라우드 컴퓨팅에 대해 이해하려면 먼저 클라우드 컴퓨팅의 기반이 되는 주요 개념 중 하나인 가상화를 이해 해야된다. [ 가상화란? ] 클라우드 컴퓨팅에서 가상화란 운영 체제(OS) 내에서 가상 머신을 생성해주는 하드웨어 가상화를 의미한다. [ 가상화를 사용하는 이유 ] 1개의 OS, 1개의 태스크를 실행하기 위해서는 물리적 서버가 1대가 필요하다. 가상화를 이용하면 1대의 물리적 서버에 여러개의 OS를 마이그레이션할 수 있다. 위와 같이 가상화를 하여 한 서버에 여러개의 OS(=게스트 OS),태스크를 마이그레이션하여 사용하게 된다면 장점은 1. 비용 절감 : 필요한 물리적 서버가 줄어들면서 비용절감이 크게 된다. 게다가 마이그레이션이 쉽기 때문에 빈 서버를 재사용하거나 서버를 중지시켜 냉각 및 유지관리가..
SSR(서버사이드랜더링) vs CSR(클라이언트사이드랜더링) [ 렌더링이란 ? ] 현재 페이지를 그리기전 DOM tree + CSSOM을 결합해 만들어진 렌더링 트리를 이용해 레이아웃단계를 거쳐 페인팅(화면에 그려주는 것)되는 과정을 말한다. 브라우저 동작 과정 에 렌더링 관한걸 적어두었다 참고하면 좋을꺼같다 ㅎㅎ 렌더링 방식에는 2가지가 있다. 1. SSR - Server Side Rendering - Client에서 요청시마다 페이지가 새로고침되며, 화면이 어떻게 보여질지 Server에서 해석하여 Client에게 보내주는 방식 - 웹의 초기부터 SPA에 대한 구현체들이 나오기 전까지는 전통적인 웹사이트들은 모두 MPA 형태로 서비스해 왔다. MPA는 페이지를 이동할 때마다 새로운 페이지를 요청한다. 모든 템플릿은 서버 연산을 통해서 렌더링하고 완성된 페이지 형..
Babel과 Webpack을 이용한 ES6 환경 구축(1) - Babel 이란? React로 개발하고 있다면 거의 대부분 babel도 함께 사용하고 있을 것 입니다. create-react-app 에도 기본으로 들어가있고 react 관련 튜토리얼을 따라 하다보면 자연스럽게 babel을 설치하게 된다. 굳이 react가 아니더라도 javascript를 사용한다면 babel를 사용해주는것이 좋다. [ babel 이란 ? ] babel은 javascript 컴파일러다 . 입출력 모두 javascript 코드이다. [ babel을 사용하는 이유 ] 최신 버전의 javascript 문법은 브라우저가 이해하지 못하기 때문에 babel이 브라우저가 이해할 수 있는 문법으로 변환해준다. ES6 , ES7 등의 최신 문법을 사용해서 코딩을 할 수 있기 때문에 생산성이 향상된다. [ babel-pol..
Babel과 Webpack을 이용한 ES6 환경 구축(2) - Webpack 이란? WebPack5는 build콘솔에 여러 warning이 발생, 각종 plugin에서 아직 webpack5대응이 완벽하게 되어 있지 않은 것 같습니다. [ WebPack 이란? ] 모듈 번들링이라고 한다. 모듈 번들링이란 html 파일에 들어가는 필요한 다수의 의존관계에있는 모듈들을 하나의 Javascript 파일로 만들어주는 방식이다. [ WebPack을 사용하는 이유 ] 1. 여러개의 파일을 하나로 묶어줌 Webpack을 사용하면 의존 모듈이 하나의 파일로 번들링되므로 별도의 모듈 로더가 필요없다. 그리고 다수의 Javascript 파일을 하나의 파일로 번들링하므로 html 파일에서 script 태그로 다수의 자바스크립트 파일을 로드해야 하는 번거로움도 사라진다. 옛날에는 페이지마다 새로운 html을 ..
[React] lodash _.merge 가 안된 경우 21번 라인을 보면 lodash 문법중 하나인 _.cloneDeep()를 사용하여 깊은 복사를 한뒤에 22번 라인에서 _.merge를 해주니 잘됫다. 사실 아직도 원인은 잘 모르겠다....원인을 찾아보려고 Object.getOwnPropertyDescriptors()를 사용하여 읽기쓰기 가능여부를 체크한결과 enumerable : true 또는 false, 열거 가능한지 여부 configurable : true 또는 false, 제거 가능한지 여부 value (선택) property의 값, 기본은 undefined writable : true 또는 false, true이면 읽기 쓰기 가능이고 false이면 읽기만 가능 모두 True 였다....원인은 뭔지는 모르겠으나 깊은복사로 해결을 했고 lodash에..
클로져(Closure)는 무엇이며, 어떻게/왜 사용하는가? 클로져를 제대로 이해하기 위해서는 javascript 의 scope, scope chain, context 에 대한 이해가 선행 되어야 한다. [scope] : 우리말로 번역하면 ‘범위’라는 뜻을 가지고 있습니다. 즉, 스코프(Scope)란 ‘변수에 접근할 수 있는 범위’라고 할 수 있다 자바스크립트에선 2가지의 스코프가 있다 1. global (전역) : 어느 곳에서든지 해당 변수에 접근가능. 2. local (지역) : 해당 지역에서만 접근 가능 자바스크립트는 함수를 선언할 때마다 새로운 스코프를 생성한다. 함수 안에서 선언한 변수는 해당 함수 안에서만 접근할 수 있는데 이걸 함수 스코프(function-scoped)라고 한다.(함수스코프는 local scope의 예라고 할 수 있다.) EX) pri..