Terraform is an open-source infrastructure-as-configuration software tool created by HashiCorp. Basic concepts of terraform Provider - 테라폼과 외부 서비스를 연결해주는 기능을 하는 모듈, infrastructure provider ex) 테라폼으로 AWS resource를 생성하기 위해서는 aws provider를 먼저 셋업해야한다. AWS, Google Cloud Platform, Microsoft Azure와 같은 범용 클라우드 서비스 또는 Github, Datadog, DNSimple과 같은 특정 기능을 제공하는 서비스, MySQL, Docker와 같은 로컬 서비스 등을 지원한다. - 테라폼 ..
컨테이너화 된 어플리케이션의 관리를 돕는 툴. 로드 밸런싱& 보안 & 자동 롤백 등 관리를 쉽게 해준당 01. 구성 요소 cluster > node > pod > container (물리적 개념) cluster란? control plane, node들로 이루어져 있으며, 쿠버네티스 운영의 가장 큰 단위이다. 컨트롤 플레인은 클러스트의 주요 구성요소들을 배포, 관리하는 역할을 한다. node란? 클러스터 내의 가상 서버로, 컴퓨팅 엔진 단위로 이해하면 된다. 노드는 마스터 노드 / 워커 노드가 있다. 마스터 노드는 컨트롤 플레인을 포함(관리)하며, 워커 노드는 어플리케이션의 실제 실행을 수행한다. 각 노드에는 pod를 구동하기 위한 요소가 존재한다. kubelet: 각 노드에서 API 서버로 들어오는 신호..
CREATE DATABASE testdb CHARACTER SET utf8 COLLATE utf8_bin; MySQL DB 생성시 위와 같이 character 설정을 하는 것을 볼 수 있다. utf8, collate.. 등 모두 인코딩과 관련되어 있는데, 정확한 의미를 정리해보자. 1. UTF-8 구글에서 가져온 설명은 다음과 같다. 유니코드를 위한 가변 길이 문자 인코딩 방식 중 하나로, 켄 톰프슨과 롭 파이크가 만들었다. 이를 이해하려면 먼저 유니코드를 알아야 한다. 기존 ASCII 코드, ANSI 코드는 문자를 인코딩 하는 데 각각 7비트, 8비트만을 사용하기 때문에 전세계의 문자들을 일관되게 표현하는 데에 한계가 존재했다. 따라서 전세계의 모든 문자들을 일관되게 사용할 수 있도록 설계된 표준으로서..
Redis(Remote Dictionary server) is an open source (BSD licensed), in-memory data structure store used as a database, cache, message broker, and streaming engine 특징 1. In memory 디스크가 아닌 메모리를 사용한다. 백업을 위해 copy나 디스크 저장 방법을 제공한다. 2. 기본적으로 key, value 형태로 데이터를 저장한다 (NoSQL) 3. Single thread 기반이다. 서버에 여러개의 redis server를 사용 가능하다. 특정 작업시에는 코어를 1개 이상 사용할 때가 있다. Data Structure String - key와 value가 일대일 관계이다...
CI/CD란? Continuous Integration/Continuous Deployment(or Delivery)의 약자. 어플리케이션 개발 / 통합 / 테스트 / 배포 단계를 자동화하여 개발과 운영의 비용을 줄이고, 유저에게 더욱 짧은 주기로 업데이트를 제공할 수 있음. 이러한 자동화된 일련의 단계를 CI/CD pipeline 이라고 한다. CI(지속적 통합) 어플리케이션의 변경사항이 주기적으로 빌드 및 테스트되어 통합되는 것 → 코드의 빌드, 테스트, 통합 자동화를 통해 달성할 수 있다. 개발자가 작성한 코드 merge를 위해 repo에 공유할 때, 자동으로 빌드 및 테스트가 수행되어 통합된다. 개발자가 push 할 때마다 push한 코드에 테스트가 실행되도록 한다. 👍 변경사항의 문제를 빠르게 ..
Node Package Manager 노드 프로젝트에서는 package.json 이라는 파일을 통해 패키지의 버전을 관리한다. 프로젝트 시작 npm init 프로젝트 정보에 따라서 package.json 파일을 잘 작성하자. // package.json { "scripts" : { // npm run [script name]을 통해 실행 가능 "test": "echo \"Error: no test specified\" && exit 1", "build": "rm -rf ./dist && tsc", "lint": "eslint ./src/**/*.ts" }, "repository": { "type": "git", "url": "레포 주소" }, "author" : "hh", "license" : "ISC"..