전체 글 35

[Javascript] Data type - Primitive type

Javascript에는 다양한 data type이 있습니다. 자바스크립트에서 제공하는 데이터 타입은 8개가 있습니다. 데이터 타입은 크게 원시 타입(Primitive data type)과 객체 타입(object / reference type)으로 구분할 수 있습니다. Primitive type 원시 타입은 변경 불가능한 값(immutable value)으로 7가지가 있습니다. 블로그들이나 사이트를 보면 6개로 표시하거나 5개로 표시하는 경우도 있습니다. Symbol type의 경우 ES2015(6) 문법에서 추가가 되었고 Bigint type의 경우 ES2020에서 새롭게 추가된 data type입니다. 위에서 변경 불가능한 값이라는 게 무엇을 말하는 것일까요? 자바스크립트는 동적 언어이고 사용해 본 사..

[Javascript] Closure란?

Closure는 JS를 이용해서 개발을 할 때 한 번쯤 들어봤을 개념입니다. 중요한 개념이라고 하는데 많이 헷갈리기에 내부적으로 어떻게 동작하는지 정리하려고 합니다. Closure란? 클로저는 외부 함수가 반환된 후에도 외부 함수 scope에 접근할 수 있는 함수입니다. 즉, 클로저는 함수가 완료된 후에도 외부 함수의 변수와 인수를 기억하고 접근할 수 있습니다. Scope Closure에 앞서 scope에 대해서 알고 있어야 합니다. scope는 말그대로 범위입니다. scope에는 3가지 종류가 있습니다. Global scope Function scope(local scope) Block scope 다음과 같은 예시를 통해서 scope에 대해 알아보겠습니다. console.log('global scope..

[JavaScript] Hoisting이란?

Hoisting이란? 변수나 함수 선언문 등을 해당 scope의 선두로 옮긴 것처럼 동작하는 특성을 말합니다. 코드를 통해서 알아보겠습니다. console.log(a); var a = 'Hello World'; 다음과 같은 코드를 실행하면 javascript는 코드를 순차적으로 실행을 하기에 a 값이 없다고 error가 나와야합니다. 하지만 위의 코드를 실행하면 'undefined'라는 결과가 나옵니다. 그 결과가 나오는 이유는 위의 코드가 아래와 같이 동작을 하기 때문입니다. var a; console.log(a); a = 'Hello World'; 첫 번째 코드를 실행시키면 Hoisting에 의해 두 번째 코드처럼 실행이 된다고 하였습니다. 그렇다고 해서 실제로 물리적으로 바뀌는 것이 아니라 선두로 ..

[Docker] Docker Swarm이란? (2)

Docker Swarm에서 Service가 어떻게 동작할까? Docker swarm에서 service가 어떻게 동작하는지에 대해 알아보기 전에 Service, task, container가 무엇인지에 대해 먼저 알아보겠습니다. Service, Task, Container Service는 manager node나 worker node에서 실행할 작업의 정의입니다. Swarm system에서 사용자와 interact하는 단위(?)입니다. Docker engine에서 container를 실행하는 것 처럼 docker swarm 모드에서 service를 생성하기 위해 docker image와 container안에서 실행해야 할 명령어와 port, 복제본 수 등을 설정해줘야 합니다. Task는 swarm의 ato..

Docker 2022.04.14

[Docker] Docker Swarm이란? (1)

Docker Swarm Docker Swarm 모드는 Docker engine에 내장되어 있고 cluster 관리 및 orchestration 기능을 해줍니다. Docker swarm 모드는 간단한 Docker CLI를 이용하여 실행시킬 수 있습니다. swarm 모드라고 하면 docker host 여러 개로 이루어져 있다고 생각하면 됩니다. 각 docker host는 manager node 또는 worker node 아니면 둘 다의 역할로써 동작합니다. manager mode는 말 그대로 manage(관리)를 합니다. worker node에 대해서 manage 하는 node를 manager node라고 하고 worker node는 container를 실행시키는 node라고 알고 있으면 됩니다. 위에서 m..

Docker 2022.04.06

[Javascript] Javscript 동작(2)

이전 글에서 Javascript가 어떻게 동작하는지를 알아봤습니다. JS engine이 create phase에서 execution context라는 것을 만듭니다. 처음 코드를 접했을 때는 global execution context를 만들어 execution stack(call stack)에 push를 하고 함수가 호출될 때마다 각 함수만의 execution context를 만들어서 stack에 push합니다. 그 후에 실행을 시키고 stack에서 pop을 하게 됩니다. 저번 글에서 creation phase 부분에서 execution context를 생성한다고 하였고 이번 글에서는 execution phase에 대해서 이야기해보려고 합니다. 이전 글을 못 보셨으면 먼저 읽고 오시길 바랍니다. 202..

[AWS] password를 이용하여 ec2 instance에 접속

AWS ec2 instance에 접속하기 위해서 기본적으로 pem key를 이용하여 접속하거나 ssm을 이용하여 접속을 합니다. pem key를 이용하여 접속하기 귀찮거나 다른 사람들에게 ec2 instance에 접근할 수 있게해줘야 하는 특별한 상황에 따라 pem key가 아니라 password를 이용하여 접속을 할 수도 있습니다. 먼저 key를 이용하여 ec2 instace를 하나 생성하겠습니다. 웬만하면 public subnet에 생성을 해줍니다. private instance의 경우도 가능하지만 bastion을 타고 들어가기 귀찮기에... 생성을 다 했으면 pem key를 이용하여 접속합니다. amazon linux 2 AMI를 이용하여 생성을 했기에 ec2-user를 사용했습니다. 우분투나 다른..

AWS 2022.04.03

[AWS] Private EC2 Instance에 접속하기

보통, 서버를 구축할 때 web service에 직접 접근하는 것을 막기 위해 private subnet에 위치시키곤 합니다. private subnet에 위치한 web server에 직접 접근하려면 어떻게 해야할까요? 첫 번째로는 ssm을 사용하면 됩니다. ssm을 사용하면 키를 이용하지 않고 public instance에 접근 가능하고 private instance에도 접근 가능합니다. 대신에 aws cli와 ssm plugin등 설치해야 할게 많습니다. 또한 ssm-agent가 server에 깔려 있지 않으면 instance를 만들 때 user data로 ssm agent를 설치해야 합니다. 두 번째는 pem key를 이용하면됩니다. public instance에 접근하기 위해서 key가 필요합니다..

AWS 2022.03.30

[AWS] Route53 Private DNS로 ALB와 연동하기

AWS 서비스에는 Route 53이라는 클라우드 DNS(Domain Name System)이 있습니다. AWS 내에서 도메인을 구입하여 DNS 서비스를 사용하여도 되고 다른 사이트에서 도메인을 구입한 후에 사용하여도 됩니다. 서비스를 할 때는 인터넷을 통해 누구나 접속할 수 있는 Public DNS를 사용해야하지만 내부 Cloud에서만 사용할 때는 Private DNS를 사용해도 됩니다. MSA 아키텍쳐에서 서로 요청을 할 때 IP가 아니라 도메인을 사용하면 여러 장점이 있기에 도메인을 사용합니다. 직접 AWS Route53을 사용하여 Private Hosted Zone을 생성해 보겠습니다. 실습. Route53에서 Private Hosted Zone을 만들어서 ALB와 연동하기 실습에 앞서, AWS 계..

AWS 2022.03.24

[AWS] EC2에 Apache Tomcat 설치하기

Java web service를 가능하게 해주는 Apache Tomcat을 EC2 amazon linux 2에 설치를 해보려고 합니다. EC2에 생성을 하기에 AWS 계정이 필요합니다. [실습] EC2에 Apache Tomcat 설치 1. EC2 생성 Amazon Linux2 AMI를 사용하는 EC2 하나를 생성해줍니다. 접근성이 좋게 public subnet에 ipv4를 활성화해서 만들어 줍니다. EC2 서버를 만들었으면 ssh나 putty나 ssm을 이용하여 해당 서버 안으로 접속해 줍니다. 2. Java 설치 Apache Tomcate을 설치하기에 앞서 EC2에 Java를 설치해 줍니다. Amazon linux2 EC2에서 Java는 amazon linux extras를 이용하여 설치 가능합니다. ..

AWS 2022.03.23

[Javascript] Javascript 동작(1)

Javascript란? Javascript는 싱글 쓰레드로 동작하는 객체 기반의 스크립트 언어입니다. 웹 브라우저나 Node와 같은 런타임 환경에서 실행이 됩니다. Javascript에는 hoisting, call by sharing, prototype, closure 등 다른 프로그래밍 언어에서 찾아볼 수 없는 특징들이 있습니다. 또한 런타임 환경에서는 비동기 작업을 하기도 합니다. Javascript는 어떻게 동작할까? Javascript가 어떻게 동작하는지 알기 위해서 먼저 Execution context와 Execution Stack에 대해서 알아야 합니다. Execution context와 stack에 대해서 잘 알면 나중에 hoistong이나 closure와 같은 개념에 대해서 더 잘 이해할 ..