분류 전체보기
-
Elastic Search에 대한 고찰카테고리 없음 2022. 4. 19. 22:26
ElasticSearch? Elastic Search는 Java 기반의 오픈소스 분산 검색 엔진이다. 분산형 RESTful 검색 및 분석 엔진으로 Elastic Search를 단순히 검색엔진으로 단독으로 사용하는 경우도 있고, ELK Stack을 구성하여 사용이 되기도 한다. ELK 스텍이란 Logstash: DB, csv 파일 등의 로그 또는 트랜잭션 데이터를 수집, 가공 해서 Elastic Search로 전달한다. ElasticSearch: Logstash로 부터 받은 데이터를 받거나 RESTful API 를 통해 데이터를 받아서 적재한다. Kibana: 데이터를 시각화 및 모니터링 해주는 시스템 이다. 다음과 같이 구분이 된다. ElasticSearch VS RDB RDB는 ROW 형식으로 데이터를..
-
Typescript Generic Function (제네릭 함수)카테고리 없음 2022. 3. 30. 22:44
Generic은 Java, C#과 같은 객체지향 프로그래밍에서 사용하는 기법이다. 제네릭은 어떠한 클래스 혹은 함수에서 사용할 타입을 그 함수나 클래스를 사용할 때 결정하는 프로그래밍 기법이다. 쉽게 말하면 메서드 매개변수의 구체적인 타입을 기재하지 않고 다양한 타입을 처리할 수 있는 기술이며, 잘만 사용한다면 코드의 재사용성을 높일 수 있다. 원래 javascripts는 타입 선언이 필요하지 않고, 그렇기에 특정 타입을 위해 만들어진 클래스나 함수도 타입에러를 런타임에서 일으킬 뿐이다. 그래서 javascript는 제네릭이란 말을 들을 일이 없다. 그래서 이런 타입 기반언어에서 generic을 사용하는데 Typescript에서도 사용할 수 있으며 함수, 인터페이스, 클래스의 재사용성을 높일 수 있다. ..
-
Scope/Closure/Hoisting카테고리 없음 2022. 3. 22. 17:19
Scope scope란 쉽게 말하면 변수와 그 값이 유요한 범위를 말한다. scope는 크게 Local scope, Global scope, Lexical scope로 나뉜다. Local scope 에서 선언된 변수는 전역 변수에서 사용이 불가능하다. 반대로 이야기 하면 Global scope는 스크립트 전체에 참조되는것을 의미한다. 특정 함수내에서의 우선 순위는 지역 변수가 전역 변수 보다 우선순위가 높다. 함수 내에서 전역 변수에 새로운 값을 할당해 준다면 전역 변수는 새로운 값으로 수정된다. 따라서 웬만하면 전역변수는 수정이 안되는 const나 사용을 하지 않는편이 더 좋다. 그리고 전역변수와 지역변수의 관계 에서 스코프 체인 이라는 개념이 나온다. 내부 함수에서는 외부 함수의 변수에 접근 가능하지..
-
Node.js 이벤트 루프카테고리 없음 2022. 3. 16. 23:54
Node.js? 대부분의 노드 책을 펴자마자 알 수 있는 것은 Node.js는 V8 엔진 기반의 event-driven, 논블로킹, 싱글스레드 js 런타임 이다. 라고 말을 한다. Spring Boot 혹은 Spring MVC 같은 경우에는 멀티스레드 기반이다. 새로운 request가 올때마다 새로운 스레드를 하나씩 polling 한다. 하지만 Node 같은 경우에는 하나의 스레드 만으로 여러 비동기 작업을 블로킹 없이 수행할 수 있고 그 기반은 event-loop 가 존재 한다. 위 사진은 Node.js 의 구성도 인데 Node.js 는 C++로 작성된 런타임이고 그 내부에 V8 엔진과 libuv를 가지고 있다. libuv? libuv는 C++로 작성되었고, Node.js 가 사용하는 비동기 I/O 라..
-
AWS ECS 개념 및 Node 서버 배포 - 3카테고리 없음 2022. 3. 10. 17:10
저번글에선 ecs에 백엔드 코드를 배포하는 것 까지 완료 하였다. 이번엔 깃헙에서 push 했을 때 자동으로 도커로 빌드하여 ECS에 배포하는 프로세스를 만들어 보겠다. Task definition 생성 및 기존 Iam 권한 변경 ECS에 들어가서 작업 정의 > sample-definition > sample definition:1 로 가면 JSON 탭을 클릭하면 해당 내용이 보인다. 해당 내용을 복사해서 프로젝트 루트에 definition.json 파일을 만들고 해당 json 을 붙혀넣기 해준다. { "ipcMode": null, "executionRoleArn": "arn:aws:iam::464086861459:role/ecsTaskExecutionRole", "containerDefinitions"..
-
AWS ECS 개념 및 Node 서버 배포 - 2카테고리 없음 2022. 3. 4. 17:40
저번에는 원론적인 설명만 했다면 이번에는 실제로 node 로 개발한 간단한 백엔드를 ecs에 배포를 해 볼 예정이다. 필자는 Mac기준 으로 작성 하였으며 다음아래 환경은 미리 설정을 해야한다. aws-cli Docker Desktop aws 계정 간단한 Node 앱 생성 및 docker build 먼저 간단하게 Express 기반 Node 서버를 생성 해줄 것이다. const app = require("express")(); app.get("/", (req, res) => { res.json({ message: true }); }); app.listen(4000, () => { console.log("Server started"); }); 정상적으로 동작하는 것을 확인한다. 그 다음은 dockerfil..
-
AWS ECS 개념 및 Node 서버 배포 - 1카테고리 없음 2022. 2. 26. 00:46
이번 포스팅에서는 ECS의 개념을 먼저 잡아보려 한다. AWS 공식 문서를 보면 다음과 같이 소개를 해준다. 컨테이너를 실행하는 고도로 안전하고, 안정적이고, 확장 가능한 방식 Amazon Elastic Container Service(Amazon ECS)는 컨테이너화된 애플리케이션의 손쉬운 배포, 관리 및 조정에 도움이 되는 완전관리형 컨테이너 오케스트레이션 서비스입니다. 여기서 핵심 단어는 완전관리형 컨테이너 오케스트레이션 서비스 이다. 완전관리형 컨테이너 오케스트레이션 서비스 사실 컨테이너라는 말은 익숙 할 것이다. 도커를 기본적으로 사용한다면 다 이해를 하고 있을것이니 컨테이너에 대한 설명은 생략 하도록 하겠다. 그러면 남은 부분은 오케스트레이션 서비스인데 오케스트레이션 서비스가 해주는 역할은 컨..
-
AWS EB Docker 배포카테고리 없음 2022. 2. 17. 16:17
이번엔 개발한 백엔드를 aws elastic beanstalk에 Docker 로 배포 해보는 방법에 대하여 포스팅 해보려 한다. 필자는 Macos 기준으로 하였다. AWS CLI 설정 먼저 aws cli 를 설치하여 로컬 pc에 기본적인 환경을 셋팅 한다. brew install awscli 그 다음으론 AWS 콘솔에 Iam 탭에서 새로운 사용자를 프로그래밍 방식 엑세스로 추가 한다. 권한 설정은 AWSElasticBeanstalk 관리자 권한을 주어 생성 한다. 태깅영역은 건너뛰어도 되고 추가적으로 작업이 필요하면 작업을 해도 된다. 이렇게 엑세스키와 비밀 엑세스키를 주는데 잘 보관을 하도록 한다. eb-deploy 계정을 생성 했으면 터미널에서 aws iam user 값을 셋팅 해준다. AWS Acc..