일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 도커
- react
- docker
- GraphQL
- JavaScript
- docker-network
- bitwiseNot
- mock
- onDestory
- 인라인핸들러
- golang
- smui
- cron
- Svelte LifeCycle
- go
- ...$$restProps
- apiTest
- testing
- TypeScript
- PostgreSQL
- GIT
- IAC
- reactjs
- 도커컨테이너
- 번역
- svelte
- :=
- Terraform
- nestjs
- githook
- Today
- Total
목록전체 글 (73)
Den`s blog
개요 이번 글에서는 Terraform 을 활용해서 AWS EC2, RDS 를 생성해보고자 한다. 일단 프로젝트에 두개의 파일을 생성해보도록 한다. provider.tf 와 infra.tf 테라폼은 특정 디렉토리에 있는 모든 .tf 확장자를 가진 파일을 읽고 진행하기 때문에 더 나누어도 상관없지만, 간단한 예제이므로 2개의 파일로 진행해보가자 한다. 먼저 provider.tf 를 보겠다. .tf 파일은 HCL (Haship Configuration Language) 로 작성된다. provider "aws" { access_key = "" secret_key = "" region = "ap-northeast-2" } ## 혹은 provider "aws" { region = "ap-northeast-2" sh..
1. 테라폼이란 ? Terraform 은 하시코프 (Hashicorp) 에서 오픈소스로 개발중인 InfraStructure 관리도구 서비스 실행에 필요한 환경을 구축하는 도구로 설정관리 도구와 프로비저닝 도구로 분류 코드로서의 인프라스트럭처 (Infrastructure as Code, IaC) 를 지향하고 있는 도구로, GUI나 웹 콘솔을 사용해 서비스 실행에 필요한 리소스를 관리하는 대신 필요한 리소스들을 선언적인 코드로 작성해 관리할 수 있도록 함 2. 테라폼 설치 맥OS 에서는 Homebrew 를 사용해 간단하게 설치가 가능 $ brew install terraform 3. 기본 개념 1. 프로비저닝 (Provisioning) 어떤 프로세스나 서비스를 실행하기 위한 준비단계를 프로비저닝이라고 함 크..
컨테이너를 외부에 노출하기 컨테이너는 가상 머신과 마찬가지로 가상의 IP 주소를 할당 받는다. 기본적으로 도커는 컨테이너에 172.17.0.x 의 IP 를 순차적으로 할당한다. 도커를 실행한 후, ifconfig 를 사용하면 확인할 수 있다. 도커 초기 이미지에는 최소화된 패키지의 우분투를 실행하면 설치가 되어 있지 않은 경우가 있어서, 설치를 해주어야 한다. apt-get update apt-get install net-tools 왼쪽 이미지를 보자 도커의 NAT IP 인 172.17.0.2 를 할당받은 eth0 인터페이스와 로컬 호스트인 lo 인터페이스가 있는데, 아무런 설정을 하지 않았다면 이 컨테이너는 외부에서 접근할 수 없으며 도커가 설치된 호스트에서만 접근할 수 있다. 외부에 컨테이너의 애플리..
Svelte 에서는 React, Vue 와 달리 인라인 핸들러를 권장/지향하고 있다. React, Vue 에서 인라인 핸들러를 지양하는 이유는 렌더링이 될 때마다 인라인 함수도 재정의가 되어 메모리를 잡아먹기 때문이라고 하고 있다. 그러나 Svelte 는 Virtual DOM 을 사용하지 않을 뿐더러, 컴파일러 자체이기 때문에 그에 따른 메모리 불이익이 없다고 한다. 또 다른 이유로는 인라인 사용시에 할당 연산자 (=) 를 사용하지 않아도 데이터 갱신이 이루어진다. (코드가 짧아진다 !) let people = [ { name: 'Den', age: 31 }, ]; function add(person) { person.age += 1; people = people; // $$invalidate(0, pe..
1. 컨테이너 생성 로컬에 없는 이미지를 생성&실행 및 컨테이너 내부로 들어가기를 해보겠다. 옵션으로 붙은 -i -t 는 컨테이너와 상호 입출력이 가능하게 하는 것으로 자세하게 다음에 알아보도록 하자. docker run -i -t ubuntu:14.04 실행하기 되면, 로컬 도커 엔진에 존재하지 않다는 메시지와 함께, 도커 중앙 이미지 저장소인 도커 허브에서 자동으로 이미지를 내려 받고, 컨테이너를 생성과 실행을 동시에 하고, 컨테이너 내부로 들어오게 된다. 화살표가 가리키는 의미가 실행된 컨테이너 내부로 들어왔다는 의미이다. 컨테이너에서 기본 사용자는 root 이고, 호스트 이름은 무작위 16진수 해시 값이다. 도커에서 나가는 방법 1. 쉘에서 exit 입력 혹은 Ctrl+D ⇒ 내부에서 빠져 나옴과..
1. 도커 이미지와 컨테이너 이미지와 컨테이너 : 도커 엔진에서 사용하는 기본 단위이자 핵심 1. 도커 이미지 컨테이너를 생성할 때 필요한 요소, 가상머신에서 사용하는 iso 파일과 비슷한 개념 이미지는 여러 계층 으로 된 바이너리 파일이 존재하고, 컨테이너를 생성하고 실행할 때 읽기 전용으로 사용됨. 도커 명령어로 내려받을 수 있고, 별도의 설치는 필요 없다. 이미지 이름의 구성 [저장소 이름]/[이미지 이름]:[태그] 로 구성 alicek106/ubuntu:14.04 # 저장소이름/이미지이름:태그 ubuntu:latest # 이미지이름:태그 저장소 (Repository) : 이미지가 저장된 장소, 명시되지 않은 경우 도커에서 기본적으로 제공하는 이미지 저장소인 Docker Hub 의 공식이미지. 생략..
1. 애플리케이션의 개발과 배포가 편해진다. 서버를 부팅할 때 실행되는 운영체제 : 호스트OS 도커 컨테이너는 호스트OS 위에서 실행되는 격리된 공간 ⇒ 독립된 개발환경을 보장 받을 수 있음. 컨테이너를 도커 이미지 라는 일종의 패키지로 만들어 운영서버에 전달하면 끝 ⇒ 서비스를 개발 했을 때 사용했던 환경을 다른 서버에서도 컨테이너로서 똑같이 복제할 수 있기 때문에 개발/운영 환경의 통합이 가능 2. 여러 어플리케이션의 독립성과 확장성이 높아진다. 모놀리스 (Monolith) 애플리케이션 : 여러모듈이 상호작용하는 로직을 하나의 프로그램 내에서 구동시키는 방식 ⇒ 소규모 서비스엔 어울릴 수 있으나, 서비스가 거대해질수록 소프트웨어의 확장성 및 유연성이 줄어든다는 치명적인 단점이 있음 마이크로서비스 (M..
1. 도커에 관하여 도커 (Docker) 는 리눅스 컨테이너에 여러 기능을 추가함으로써 애플리케이션을 컨테이너로써 좀 더 쉽게 사용할 수 있게 만들어진 오픈 소스프로젝트이다. Go언어로 작성되어 있음. 2013년 3월 첫 Release 2. 도커 프로젝트 도커 컴포즈 레지스트리 도커 퍼브 Docker for Desktop 기타 등등 주로 Docker 라 함은, Docker Engine 혹은 Docker 와 관련된 모든 프로젝트를 의미. Docker Engine이 컨테이너를 생성하고 관리하는 주체, 나머지들은 이를 좀 더 효율적으로 사용하기 위함이 큼. 3. 가상 머신과 도커 컨테이너 가상머신 기존의 가상화 기술은 하이퍼바이저를 이용해 여러 개의 운영체제를 하나의 호스트에서 생성해 사용하는 방식, 이러한 ..
배열의 항목을 보여주고, 삭제하는 코드에 대해서 보도록 하자. Delete First Fruit ! {#each fruits as fruit} {fruit} {/each} 위와 같이 작성이 된다. 이 부분에 대해서 자세히 알아보고자 하는데, 여기서 단점이 있다. 배열의 내용이 바뀌고 할당연산자를 통해서 화면이 갱신되게 되는데 아래 동영상을 보면, 하나를 삭제할때마다 li 태그 반복내용이 전체가 바뀌게 된다. 어찌보면 당연하지만, 비효율적이다. 삭제되지 않은 것들은 새로 렌더링할 필요가 없으니 ..! 그럼 굳이 새로 렌더링 하지 않으려면 어떻게 해야 할까 ? key 를 활용하면 된다 ! Key Key 는 고유하면 되고, 추천되는 것은 String과 Number 이다. 위 예제코드에서는 배열의 각 요소 값들..
특정 버튼을 클릭하여서, Input Element 을 나타나거나 사라지게 하고 나타났을 때, 포커스가 가게하는 코드를 작성해보자. Show Input !! {#if isShow} {/if} 일반적으로 svelte 에서 위와 같이 작성이 가능하다. 버튼을 누르면 toggleShow 함수가 실행이 되고, 해당 함수에 반응성을 가질 수 있는 데이터를 갱신하고, 갱신한 화면이 적용 될때까지 기다리게 tick 함수를 사용해주고 input을 찾는 쿼리를 실행해주고, 찾은 input 을 포커싱해준다, 는게 코드의 내용이다. 다만 여기서, input을 찾는 쿼리를 실행해주고, 찾은 input 을 에서 DOM 전체를 돌며 엘리먼트를 찾는게 생각보다 불필요한 작업이라면 ? 이를 없앨 수 있다면 좋지 않을 까 ? 그를 해결..