https://www.gilbut.co.kr/book/view?bookcode=BN002496

 

리액트를 다루는 기술(개정판)

입문부터 대규모 애플리케이션까지 한 권으로!

www.gilbut.co.kr

저자는 김민준님으로 블로그와 깃허브로 확인 가능하다.

- 블로그: https://velog.io/@velopert

- GitHub: https://github.com/velopert

나는 원래 자바스크립트와 제이쿼리를 이용한 웹 개발에 익숙했지만, 리액트에 대해서는 페이스북 개발팀이 만들었다고 들어보기만 했었다. 이 책은 900페이지 정도 분량으로 리액트가 왜 생겨났는지, 어떠한 특징 때문에 사용하지는 설명하고 있다. 그리고 기본설명 및 배경과 개발환경도 OS별로 설명하였고, 기초인 함수형 컴포넌트와 클래스형 컴포넌트의 차이점과 핵심 내용인 리덕스와 리덕스 미들웨어에 대해 설명이 잘 나와 있었다. 게다가 후반부에는 Node.js, Koa, MongoDB 기술로 리액트를 활용한 프로젝트를 하나 하나 따라할 수 있다.

이 책을 보기 위해서는 우선 HTML, CSS, 자바스크립트에 대한 기초를 어느정도 습득하고 난 뒤에 보는게 좋을 것 같다. 그래야만 중간에 기본적인 사항을 헤매지 않고 진행할 수 있기 때문이다. 각 챕터 별 상세한 설명과 소스코드와 그림으로 이해를 돕고 있다. 게다가 각 챕터 별로 정리를 두어 생각을 다시 해보게 돕고 있다.

기존 나와있는 책이 아닌 개정판을 통해 추가된 함수형 컴포넌트에서 Hooks 사용하는 법, Context API를 사용하여 전역 상태 관리하기, 코드 스플리팅과 서버 사이드 렌더링 구현 방법에 대한 개선에 대해 나오고 있다. 단순히 배운 내용만이 아닌 응용을 통한 프로젝트를 통해 완성할 수 있다.

출처: https://www.coursera.org/learn/google-kubernetes-engine/home/week/1

 

Coursera | Online Courses From Top Universities. Join for Free

1000+ courses from schools like Stanford and Yale - no application required. Build career skills in data science, computer science, business, and more.

www.coursera.org

출처: 구글 클라우드 스터디잼 (중급) 가이드라인(박찬성님)

강의명: Welcome to Getting Started with Google Kubernetes Engine

## 쿠버네티스란 What are Containers?

# 전통적인 과거의 서버 환경

 

어플리케이션은 베어메탈 (bare-metal) 서버에서 구동되었으므로 아래와 같은 셋업 과정이 필요
1. 하드웨어의 설치
2. OS 또는 커널 (kernel)의 설치
3. 어플리케이션 구동에 요구되는 수 많은 의존성에 대한 설치 및 관리
4. 어플리케이션을 이 모든것 위에 설치할 수 있음

문제점
: 이 같은 기나긴 일련의 셋업이 완료된 이후에도 필요한 지속적인 의존성 유지/관리 및 모든것에 대한 싱크를 맞추기가 어려움
  ⇒ 해결책으로, VMware가 하이퍼바이저 개념을 도입

 

 

# 하이퍼바이저에 의한 서버 환경

 

 

VMware 진영에서, 하드웨어를 하이퍼바이징 하기 위한 방법을 고안
하드웨어를 커널, 의존성, 어플리케이션 으로부터 분리시킨다는 의미

이를 위해서, "하드웨어 하이퍼바이저"라는 계층이 개발되었고, 하드웨어 윗단에 위치한 모든 계층들을 자유롭게 만들어 주었음
즉, 한 단계의 추상 계층이 도입

 

 

 

# 하이퍼바이저에 의한 서버 환경의 문제점 1

 

 

하나의 가상머신에, 여러개의 서로 다른 버전으로 운영되는 동일한 어플리케이션의 설치/구동이 불가능
⇒ 의존성 에러가 속출하고, 여러가지 충돌 상황이 발생

이 문제에 대하여, 여러개의 가상머신을 생성하는 것으로 이 문제를 해결하려고 노력

 

 

# 하이퍼바이저에 의한 서버 환경의 문제점 2

 

무수히 많은 가상 머신을 생성한 후,
동일한 어플리케이션의 서로 다른 버전 또는 단순히 복제된 동일 버전을 설치/구동

의존성의 문제를 해결하지 못해서, 불가피하게 수 많은 가상머신을 만들어낼 수 밖에 없었다는 것이 문제
비용이 많이 들고, 모든면에서 비 효과적이고, 하드웨어 측면에서 또한 비 효과적임
⇒ 이 문제를 해결하기 위해 등장한 것이 Container

 

 

# 컨테이너에 의한 서버 환경

 

 

컨테이너 단위의 다른 수준의 추상화 방식
- 하드웨어 계층과의 분리
- {커널, 컨테이너 런타임} 계층과의 분리

즉, 위 두 가지 계층을 어떤 종류든지간에 어플리케이션과 어플리케이션에 필요한 의존성으로 부터 분리

매우 이식성이 좋고, 매우 효율적인 장점

 

 

# 컨테이너에 의한 서버 환경 - 개발자들에게 인기 있는 이유

 

어플리케이션은 어디에서든, 동일하게 동작
 - 개발, 테스트, 프로덕션 어떤 환경에서든
 - 베어메탈, 가상머신, 클라우드 어떤 환경에서든

패키지화된 어플리케이션은 개발 싸이클의 속도를 빠르게 회전시킴
 - 애자일한 생성과 배포가 가능
 - 지속적인 통합/배포가 가능
 - 단일 파일의 복사만으로 이를 가능하게 해줌

마이크로서비스를 가능하게 해 주기 위한 방법을 제공:
 - 분석 가능성(introspectable), 격리성(isolated), 탄력성(elastic)

 

# 12년에 걸친 컨테이너의 역사

 

# 도커 오버뷰

 

도커 컨테이너와 이미지의 관계
 - 이미지: 일종의 실행가능한 컨테이너를 생성하는데 사용되는 템플릿
 - 컨테이너: 이미지 기반의 실제 실행가능한 이미지 인스턴스

왼쪽 그림과 같이, ubuntu 라는 생성된 이미지는건드릴 수 없는 Read Only 계층. 
인스턴스를 찍어내기 위한 템플릿이라고 생각해 보면 당연한 내용
이미지라는 템플릿으로부터 여러개의동일한 컨테이너라고 불리는 인스턴스를 찍어낼 수 있음.
⇒ 인스턴스가 되었기 때문에, Read Write 가능한 계층

 

출처: 초보자를 위한 코틀린(Kotlin) 200제 / 엄민석 지음 | 정보문화사 | 2018년 05월 20일 출간

else는 if가 있어야 쓸 수 있는 키워드. if의 조건이 false이면 else가 수행

package com.practice020

fun main(args: Array<String>): Unit
{
	val a = 10
	val b = 5

	if (a < b)
		println("if")
	else
		println("else")			// 출력

	if (a > b)
		println("a가 크다.")		// 출력
	else
		println("b는 a 이상이다.")
}

+ Recent posts