Kubernetes Architecture
2022. 3. 10. 18:17
🚦 Server/Kubernetes
목차 Desired State Kubernetes Architecture Master Node API server etcd Master 구성 Node 구성 Pod이 생성되기 위해 거치는 순서 1. Desired State Desire(요청)이 들어오면, 어떤 상태인지 체크를 하고, 그 요청과 현재 상태의 차이점을 발견하고, 그리고 요청을 해결한다. 이 프로세스가 루프를 돌면서 이루어진다. 이런 Desired state가 굉장히 많아질 수도 있다. 복제가 잘 됐는지, 로드밸런싱이 잘 되었는지 등의 Controller를 만들 수 있다. 2. Kubernetes Architecture Master : 중간에서 체크하고 실행되는 부분 Node : 실제로 컨테이너가 실행되는 부분 API server : 중간에서 ..
Kubernetes 란
2022. 3. 10. 11:29
🚦 Server/Kubernetes
목차 Container의 특징 Container Orchestration Container를 관리하는 방법에는 뭐가 있을까? 도커는 정말 편하다. 그럼 그 중에서도 도커를 관리하는 도구는 뭐가 있을까? 필자는 리눅스 명령어로 도커 컨테이너를 관리 한 경험이 있다. 1. Container의 특징 가상머신과 비교하여 컨테이너 생성이 쉽고 효율적이다. 컨테이너 이미지를 이용한 배포와 롤백이 간단하다. 언어나 프레임워크에 상관없이 애플리케이션을 동일한 방식으로 관리한다. 개발, 테스팅, 운영 환경은 물론 로컬 피시와 클라우드까지 동일한 환경을 구축 특정 클라우드 벤더에 종속적이지 않다. 수많은 컨테이너를 어떻게 관리하는게 좋을까? 서비스 검색, 서비스 노출, 서비스 이상, 부하 모니터링을 어떻게 해야 좋을까? ..
git 명령어 정리
2022. 3. 4. 10:21
🚦 Server/git
프로젝트(레파지토리) 폴더 생성 git init git status git add [관리할파일명] git config --global user.name [유저이름] git config --global user.email [이메일] 이걸 하지 않고 진행하는 경우 --global to set the identity only in this repository 매세지가 보이게 됨 git commit 만약 윈도우10에서 git commit 실행시 vim으로 실행 안된느 경우 다음 코드 실행 : git config --global core.editor vim vim 이 실행되었을 때 commit message를 작성 git log git add [업데이트 할 파일명] 처음 추가할 때도, 버전 업 할 때도 add를 ..
ORM으로 DB 작업하기
2021. 10. 31. 12:57
🚦 Server/Node.js
1. ORM으로 하는 DB 작업 mysql2 를 이용해서 DB에서 리소스를 가져오는 방법이 있다. sql문을 잘 다루지 못하는 경우 ORM 패키지 사용해서 JS로 작성한 DB 관련 코드를 자동으로 SQL문으로 변환시켜서 클라이언트 객체를 통해 DBMS로 전송시키는 방법이 있다. ORM (Object Relational Mapping) 이란? 데이터베이스에 있는 데이터를 하나의 객체에 매핑시키는 기술이다. 그니까 sql문을 작성하지 않고 JS 코드만으로 데이터를 가져오고 보낼 수 있다는 것이다. $ npm install mysql2 DB를 다룰때에 ORM을 쓰든 안쓰든 이 패키지가 필요하다. $ npm install sequelize sequelize-cli $ npx sequelize init init ..
express 시작하기
2021. 10. 28. 15:27
🚦 Server/Node.js
1. express 시작하기 패키지 설치 $ npm install express 설치하고 app.js 파일을 만들어보자. 외부 클라이언트로부터 받은 url path 부분이 '/hello' 라면, 그 함수가 실행된다. 이렇게 특정 조건이 만족되었을 때 실행되는 함수가 콜백이라고 했다. 특정 path에 대응하는 콜백을 route handler 라고도 한다. route handler : 특정 path를 대상으로 한, 특정 메소드를 가진 리퀘스트를 처리해주는 함수 route : 서버가 각 req의 path 부분을 보고 알맞은 작업을 수행하는 것 handler : 그 작업을 담당하는 존재 request : 이 객체를 통해 클라이언트가 보낸 객체를 다룰 수 있다. response : 이 객체를 통해 적절한 resp..
git commit 다루기
2021. 10. 26. 18:26
🚦 Server/git
commit 히스토리 보기 $ git log 가장 오래된 커밋 메시지가 가장 아래에 있고 최근 커밋이 맨 위에 있다. commit 다음 길게 써져있는 문자열은 커밋 아이디이다. 깃은 각각의 커밋을 구별하기 위해 아이디를 붙여서 관리한다. commit hash 라고도 한다. 커밋을 한 사람과 커밋 한 시간까지 나와 있다. 더 깔끔하게 봐보자 q를 눌러 나가주자. $ git log --pretty=oneline 커밋 로그를 이쁘게 한줄씩 출력하기 그럼 어떤 파일이 어떻게 변했는지 알아보자. README 파일은 어떻게 변했을까? $ git show 1d53 여기서 --- 까지가 해당 커밋 이전의 모습이고 그밑에 +++ 까지가 해당 커밋 이후의 모습이다. m 옵션 없이 commit message 남기기 $ gi..
서드파티 모듈, npm 이해하기
2021. 10. 26. 10:38
🚦 Server/Node.js
모듈을 require 할 때의 과정 require('sample')로 모듈을 로드할 때, sample.js 라는 파일로 존재하는 모듈을 로드할 수 있고, sample 이라는 디렉토리 안의 모듈을 로드할 수 있다. 디렉토리 이름인 경우 오른쪽 절차에 따라 로드한다. 서드파티 모듈을 로드할 때는, 모듈의 이름이 디렉토리인 경우, 그 안에 package.json이라는 포함하고 있는 지 확인한다. 그렇니까 서드파티 모듈은 package.json 이라는 파일을 가지는 디렉토리인 것이다. 서드파티 모듈을 로드할 때의 경로 package.json 파일을 가진 디렉토리 형태로 존재하기 때문이다. 그렇기 때문에 서드파티 모듈의 이름이 디렉토리 이름과 같았던 것이다. 정리하자면 패키지 안에 package.json 파일이 ..
git, GitHub 시작하기
2021. 10. 22. 17:32
🚦 Server/git
git 이란? git : 버전관리 하는 프로그램 Github : git으로 관리하는 프로그램을 올려둘 수 있는 곳이 github, 원격저장소 commit : 프로젝트 디렉토리의 모습을 하나의 버전으로 남기는 행위 & 결과물 repository : commit이 저장되는 곳 .git : repository git init : 비어있는 레포지토리를 생성 commit 시 주의사항 commit : 이 순간을 기억해줘 commit을 할때는 누가 했는지 남겨야 한다. 협업할 때 어떤 커밋을 누가 했는지 구별하기 위해서 한다. 처음으로 커밋할 때 : 사용자 이름, 이메일 주소 $ git config user.name "SunWooChan" $ git config user.email "swc5770@naver.com"..
Node js 정리
2021. 10. 19. 21:03
🚦 Server/Node.js
1. require 함수가 리턴하는 객체는 상수로 대입하는 이유 자바스크립트에서 변수(variable)와 상수(constant)의 차이 변수에는 값을 원할 때마다 새롭게 지정해도 되지만, 상수의 경우 값을 한번 설정한 후에는 다른 값을 설정할 수 없다. 왜 그런 걸까? 모듈이 리턴한 객체를 변수로 받으면, 나중에 본인 또는 다른 개발자가 변수 m에 다른 값을 실수로 다시 지정하게 될 수도 있다. 이 경우, 그것 자체만으로는 에러가 발생하지 않지만, 의도하지 않은 오류가 발생할 수 있다는 점에서 오히려 더 위험하다. 하지만 모듈이 리턴한 객체를 상수로 받으면, 상수 m에 새로운 값을 다시 지정하려는 코드 자체에서 에러가 발생하기 때문에, 잘못된 코드를 작성하는 것을 미리 방지할 수 있다. 2. 모듈 내부의..
Nginx란? 내가 만든 서버는 뭐지?
2021. 10. 15. 20:16
🚦 Server/AWS
서버를 AWS EC2에 위치 시킨 후 DNS를 등록해서 배포 하려 찾아보는 도중 WEB Server는 nginx를 사용하는게 좋다는 글을 봤다. 분명 내가 Node.js 에서 express를 사용하며 만든 작지만 소중한 나의 서버가 있는데 nginx를 사용하란다. 도대체 내가 만든 서버는 뭐고 nginx는 뭐고 둘의 차이는 뭐고 역할은 무엇일까 궁금해서 찾아본다. nginx 란? nginx란 웹 서버 제품중 하나이다. Web Server란? 웹서버의 개념 : 웹 클라이언트로부터 HTTP Request를 받아 Static file(html, css, js)을 제공하는 프로그램이다. web server의 기능 HTTP을 기반으로 하여 클라이언트의 요청을 서비스 하는 기능을 담당한다. 요청에 따라 2가지 기능..
REST API
2021. 10. 6. 10:17
🚦 Server/AWS
REST API REST API는 HTTP를 이용해서 기계들이 통신을 할 때 HTTP가 가지고 있는 기능을 최대한 활용해서 명확하면서 단순하게 통신할 수 없을까?하는 고민에서 출발한 모범사례라고 할 수 있다. 블로그나 SNS의 하나하나의 글을 토픽이라고 한다면, 이러한 데이터들을 REST API에서는 리소스라고 한다. 리소스는 uri를 통해 표현되고 식별된다. 이때 토픽 전체를 식별하고 싶다면, 또는 여러개의 토픽을 식별하고 싶다면 Collection을 사용하면 된다. 복수형을 사용한다. 이렇게 한건한건 모여있는 것은 Element라고 한다. 즉 Element가 모여있는 것은 Collection이라고 한다. uri는 단지 그 정보를 식별하는 이름일 뿐이고, 이 정보를 가공할 수 있어야 한다. 정보를 가공..
Node - 화살표 함수
2021. 8. 10. 11:46
🚦 Server/Node.js
화살표 함수는 function을 완전히 대체할 수는 없다. function add1(x+y){ return x + y; } const add2 = (x,y) => { return x + y; }; const add3 = (x,y) => x + y; const add4 = (x,y) => (x+y); // 헷갈릴 수 있으니 리턴값 묶어준다. function not1(x){ return !x; } const not2 = x => !x; 주의할 점 바로 객체를 리턴하는 경우에만 (소괄호) 필수!! const obj = (x, y) => ({x, y}); const obj = (x, y) => { return {x, y} }; 화살표 함수가 기존 함수를 대체할 수 없는 이유 : this 화살표 함수는 무조건 부..
Node - const, let 는 var를 대체한다.
2021. 8. 10. 11:23
🚦 Server/Node.js
var, const if (true){ var x = 3; } console.log(x); // 3 if (true){ const y = 3; } console.log(y); // Uncaught Reference Error: y is not defined function a(){ var z = 3; } console.log(z); // Uncaught Reference Error: z is not defined 블록{} 바깥에서 y를 접근하면 에러가 난다. variable은 function으로 감쌌을 때 밖에서 접근을 못한다. variable은 함수 스코프를 존중하고, const는 블록 스코프를 존중한다. let const a = 3; a = '5'; // 다른거 대입하면 에러 const b = { n..
Node - 호출 스택, 이벤트 루프
2021. 8. 10. 10:18
🚦 Server/Node.js
1. 호출 스택 function first(){ second(); console.log('첫번째'); } function second(){ third(); console.log('두번째'); } function third(){ console.log('세번째'); } first(); >> 세번째 두번째 첫번째 함수를 선언했다는 것은 메모리에 올렸다는 뜻이다. 메모리는 임시 저장 장치이다. 컴퓨터가 잠깐 기억하는 것이다. Anonymous는 파일이 시작될 때 생긴다. 항상 있다고 생각하면 좋다. 가상의 전역 컨텍스트이다. 호출스택은 자바스크립트가 어떻게 실행되는 건지 보여준다. 동기식 코드이다. 2. 이벤트 루프 function run() { console.log("3초 후 실행"); } console.lo..
Node - 정의, 특성, 역할
2021. 8. 9. 12:10
🚦 Server/Node.js
Node란 크롬 V8 자바스크립트 엔진으로 빌드된 자바스크립트 런타임이다. 즉, 자바스크립트 실행기이다. 노드가 나오기 전에는 브라우저가 html 읽으면서 스크립트를 같이 읽는 방식으로 자바스크립트를 실행했다. 그러니까 html이 없었으면 스크립트를 못 읽었다. 브라우저가 스크립트를 읽은 것이긴 한데, 브라우저가 html에 종속되어 있었다. 노드가 나옴으로 인해서 자바스크립트는 html이나 브라우저의 종속성을 벗어난 것이다. Node는 서버가 아닌가요? 노드 자체는 서버가 아니다. 노드가 서버의 역할을 수행할 수 있는 것이다. 자바스크립트 코드로 서버 수행하는 코드를 넣으면 노드가 그것을 실행해주는 것이다. Javascript = 언어 Node = 런타임 자바스크립트 엔진 = V8 Node의 특성 1. ..
URL
2021. 8. 6. 21:55
🚦 Server/Node.js
http : 통신 규칙 도메인 이름, 호스트 : 인터넷에 연결되어있는 주소 포트 번호 : 한대의 컴퓨터가 어떤 서버와 연결되어 있나. path : 디렉토리 안의 어떤 파일을 가리키나 query string id값이 무엇이냐에 따라서 보여주는 것이 다르다.