목록분류 전체보기 (145)
쿼카러버의 기술 블로그
리눅스를 조금이라도 사용해봤다면 항상 systemd라는 미지의 프로세스가 있다는 것을 눈치 챘을 것이다. PID1를 차지하고 있는 프로세스인 만큼 엄청 중요한 역할을 할 것만 같다. Systemd는 부팅부터 서비스 관리 로그 관리 등의 시스템 전반적인 영역에 걸쳐있는 프로세스다. 리눅스는 OS이기 때문에 전원을 ON 시킬 경우, 부팅이 되는 과정에서 시스템을 초기화하고, 환경 설정을 누군가 해줘야 한다. systemd이전에는 init이라는 프로세스가 PID1를 차지하고 그 역할을 해주었는데, init 프로세스는 부팅 시작시 가장 먼저 시작되는 프로세스이고, 부모 프로세스로 동작한다. 하지만 init의 한계를 극복하기 위해 systemd가 등장하면서 호환성도 제공하고, init과는 다르게 병렬로 실행되어서..
데몬셋(daemonset)은 클러스터 전체에서 포드를 띄울 때 사용하는 컨트롤러다. 쿠버네티스의 컨트롤러 중 하나인데, 여기서 컨트롤러란 기본 오브젝트를 생성하고 이를 관리하는 역할으 한다. 대표적인 컨트롤러로는 Replica Set, DaemonSet, Job, StatefulSet, Deployment 등이 있다. 데몬셋은 디플로이먼트와 유사하게 파드를 생성하고 관리한다. 디플로이먼트는 롤링 업데이트, 배포 일시 중지 등 배포 작업을 세분화한다면 데몬셋은 특정 노드 또는 모든 노드에 실행되어야 할 특정 파드를 관리하는 것이다. 데몬셋을 이용해서 포드를 실행하면 해당 포드는 클러스터 전체 노드에 떠 있게 된다. 다시 말해서 클러스터 내에 새롭게 노드가 추가되었을 때 자동으로 그 노드에 데몬셋으로 띄운 ..
IaaS 서비스 Infrastructure as a Service 서비스 형태의 인프라스트럭처라는 뜻으로, 컴퓨터 인프라스트럭처를 서비스 형태로 제공받는 형태다. 인프라스트럭처란 단순히 말해서 CPU, 메모리, 저장 장치, 네트워크같은 웹 서비스에 필요한 하드웨어 장비를 의미한다. 실제 물리 머신을 대여할 수도 있고 여러 머신이 자원을 공유하는 가상화된 머신을 대여할 수도 있다. IaaS는 머신 인프라를 대여하기 때문에 웹서비스를 하려면 예상 사용량에 맞는 장비를 대여하고 IP를 할당받은 뒤 본인이 직접 머신에 접속해서 웹서버를 복사하고 실행해야 한다. 사용자가 모든 제어를 다 해야 하지만, 세밀한 조정이 가능하고 가격이 저렴하다. PaaS 서비스 Platform as a Service 서비스 형태의 플..
웹 서비스의 가장 기본적인 형태 = 3티어 웹이다. 3티어 웹은 프론트엔드, 백엔드, 데이터베이스로 구분된다. 프론트엔드는 화면에 보여지는 부분을 담당한다. HTML, 자바스크립트, CSS파일 등이 프론트엔드를 담당한다. 백엔드는 프론트엔드가 화면을 그리는 데 필요한 데이터와 로직을 담당한다. 데이터베이스 계층은 데이터를 담아두는 계층이다. 웹 서버에서 데이터를 추가, 삭제, 변경할 때 데이터베이스에 데이터를 저장하면 웹 서버가 종료됐다가 다시 실행되어도 데이터는 사라지지 않는다.
context를 사용해서 웹서버가 2초 안에 꺼지게 되면 request가 cancel되는 코드를 짜는 예제를 보면 time.After가 많이 쓰인다. 다른 branch가 더 빨리 run하게 되면, timer는 release되지 않는 식으로 select 문에 많이 쓰인다. 그리고 어떻게 작동하는지 확인 하기 위해 아래 예제를 보면, time.After(2*time.Second)는 select문이 도달한 이후 시점 부터 계산되고, function이 끝나는 것을 확인할 수 있다. Memory Leak이 발생하지 않는 케이스 select { case
간단한 웹서버를 구현하다보면 fmt 패키지의 Fprint함수를 사용하는 경우를 종종 볼 수 있다. fmt 패키지의 Fprint()는 출력 스트림에 값을 쓰는 함수다. Fprint()는 지정한 출력 스트림에 출력한다는 점에서 Print()와 차이가 있다. 예를 들어 http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { fmt.Print(w, "Hello World") }) 위의 핸들러 func으로 등록된 함수리터럴을 보면, 인수로받은 http.ResponseWriter타입을 출력 스트림으로 지정하고 있다. http.ResponseWriter 타입에 값을 쓰면 HTTP응답으로 전송된다.
먼저 zsh를 설치한다 sudo apt-get update sudo apt-get install zsh #Y 입력 zsh --version #버전 확인 프롬프트 설정 zshrc에 적용 vim ~/.zshrc 아래 내용 하단에 입력 # ~/.zshrc # Find and set branch name var if in git repository. function git_branch_name() { branch=$(git symbolic-ref HEAD 2> /dev/null | awk 'BEGIN{FS="/"} {print $NF}') if [[ $branch == "" ]]; then : else echo '- ('$branch')' fi } # Enable substitution in the prompt..
데이터 타입(Scalar 와 Composite) 데이터 타입 중에는 어떤 것은 단 하나의 값만을 저장할 수 있다. 반대로 어떤 것은 동일하거나 서로 다른 데이터 타입의 값들을 여러 개 저장할 수도 있다. 단 하나의 값만을 저장할 수 있는 데이터 타입을 스칼라(Scalar) 데이터 타입이라고 하고, 두 개 이상의 값을 저장할 수 있는 데이터 타입을 컴포지트 데이터 타입이라고 한다. (e.g. enumerations)