전체 글 107

백엔드 입문 (4) - NoSQL DB 알아보기 - 몽고디비

1. 데이터베이스 : 데이터를 체계화하여 관리하는 데이터의 집합 또는 해당 작업을 수행하는 응용 프로그램을 의미함.: 몽고디비는 NoSQL 데이터베이스. 그 중 도큐먼트 타입이다.: NoSQL 데이터베이스는 데이터 모델에 따라 키-밸류 , 컬럼, 도큐먼트 , 그래프 타입으로 분류할 수 있다.2. NoSQL 분류1) 키-밸류 타입 : 키를 기준으로 데이터를 조회하고 값으로 데이터를 저장한다.  ex) Redis, Amazon DynamoDB2) 도큐먼트 타입 : JSON과 유사한 형식의 객체를 담은 데이터를 저장함.ex) MongoDB , Couchbase , Firestore 3) 그래프 타입 : 노드를 사용하여 데이터를 저장하고, 에지를 사용해 데이터 관계를 저장한다.ex) ArangoDB , Amaz..

BackEnd Skils 2024.12.03

JavaScript에서 비동기 처리하기

1. 동기와 비동기: 동기 프로그래밍에서 작업은 차례로 실행되며 작업이 완료될 때까지 중단할 수 없음: 비동기는 임의의 순서로 또는 동시에 작업이 실행 될 수 있다.   2. JS에서 비동기처리하는 방법: 런타임에서 싱글 스레드로 동작한다.  그 말은 한 번에 하나의 작업만 처리할 수 있다는 뜻이다. : 그러나 프로미스 ,콜백 , Async Await 등의 방법을 사용하면 자바스크립트에서도 비동기 처리를 할 수 있다. 3. 콜백 : 함수의 파라미터로 함수를 전달하며, 비동기 처리가 끝났을 때 전달된 함수를 실행한다.: 가독성이 좋지 못하여 유지보수나 디버깅때 어려움이 있는 것이 특징이다. (콜백 지옥이라고도 함): 카페에가서 점원에게 커피를 주문 하고 다른 것을 하고 있으면, 커피 제조가 끝난 후에 손님..

백엔드 입문 (3) - npm 과 yarn 패키지

1. npm(node package manager): 자바스크립트용 패키지 매니저.: 유저가 만든 패키지를 등록하는 저장소를 의미하기도 하지만 CLI를 의미하기도 한다. : node.js를 설치할 때 함께 설치된다. 2. 패키지 매니저 : 프로젝트에 필요한 의존성 패키지를 관리하는 프로그램을 의미한다.: 의존성 패키지란 해당 프로젝트를 실행하는 데 꼭 필요한 라이브러리와 모듈을 의미한다. 3. 패키지와 모듈: Node.js에서 패키지는 package.json으로 정의한 파일 또는 디렉토리를 의미한다.: 패키지에는 package.json이 꼭 포함된다. : 결론적으로 package.json으로 정의한 코드 뭉치가 바로 패키지라고 할 수 있다.: 모듈은 node_modules 디렉토리 아래에 있는 파일 또는..

BackEnd Skils 2024.12.01

백엔드 입문 (2) - Express로 웹 어플리케이션 서버 구현해보기

1. URL 구조https://www.example.com:80/path/to/index.html?key1=value1#hash1) http - protocol = 프로토콜 2) www.example.com  - honstname = 도메인명3) 80 - port = 포트 번호4) path/to/index.html - pathname = 웹 서버 자원에 대한 경로5) ?key1=value1 - query = 웹 서버에서 제공하는 추가 매개변수6) #hash - hash = 일종의 북마크(서버에 전송하지 않음) 2. 라우팅 : URL 경로에 따라 다른 응답을 주는 기능3. 라우팅 요청 처리하는 서버 예시// 명령어 실행node app.jsconst http = require("http");const url..

BackEnd Skils 2024.11.30

백엔드 입문 (1) - Node.js로 백엔드 시작해보기

Node.js와 Express에 대한 것은 간략하게 아래 글에서 작성했었다.https://november-itstime.tistory.com/80 Node.js + express로 백엔드 서버 구축 도전기 (1) - 소개회사에서 사내 랜딩 페이지 백엔드를 구축해보라는 과제를 받아서 도전해본 것들을 블로그에 정리하며 개념을 학습하고자 한다.사실 개발하면서 책과 각종 자료들을 참고하긴 했으나 개념 학november-itstime.tistory.com이번 포스팅에서는 조금 더 구체적으로 Node.js에 대해 살펴보고자 한다. 1. Node.js가 서버에서 자바스크립트를 실행하는 방법: Node.js는 V8 자바스크립트 엔진과 C/C++ 등에 의존성을 가진 자바스크립트 런타임이다. 이 때 런타임이란 자바스크립트..

BackEnd Skils 2024.11.27

백엔드 사전 지식 (3) - 자바스크립트 생태계

나는 node.js로 백엔드를 구축 할 계획이기 때문에 자바스크립트 생태계에 대해 간단히 알아보고자 한다.1. 자바스크립트 생태계 : 1995년에 넷스케이프에서 HTML을 동적으로 표현할 목적으로 만든 모카라는 이름의 스크립트 프로그래밍 언어로 탄생했다. : ECMAScript에 정의되어 있으며 시작은 웹 브라우저를 위한 언어였다.: 현재 ECMAScript의 최신 버전은 ECMA 2021이며 지금은 node.js와 같은 런타임 환경이 출현하면서부터 백엔드에서도 쓸 수 있게 되었다. 2. 패키지 매니저 : npm과 yarn이 대표적이다. : npm은 Node.js를 설치하면 자동으로 설치된다. 그러나 용량 문제, 패키지 내려받는 속도 문제, 보안 문제 등이 있어 개선된 yarn 혹은 pnpm을 많이 사용..

BackEnd Skils 2024.11.26

백엔드 사전 지식 (2) - 백엔드 배포 방법부터 클라우드 서비스까지

1. 배포 방법1) 롤링 배포: 특정 개수의 서버들을 돌아가며 배포하는 롤링 배포: 도커 같은 컨테이너 기술 등 특히 앤서블을 잘 사용하면 구현 가능하다.2) 블루 그린 배포: 똑같은 서버 인스턴스를 띄우고 로드밸런서 설정을 바꿔버리는 블루 그린 배포3) 카나리 배포: 전체 서버의 특정 비율만큼 배포해보고 문제 없는 경우 점점 배포를 늘려가는 방식* 컨테이너란?: 소프트웨어의 실행에 필요한 실행 환경을 독립적으로 운용할 수 있도록 기반 환경 또는 다른 실행 환경과의 간섭을 막고 실행의 독립성을 확보해주는 운영체제 수준의 격리 기술 * CI / CD1) CI : 저장소에 코드가 반영되는 것을 말한다.: Github Action , Jenkis 등을 이용한다.2) CD: 실제 프로덕션 환경까지 변경된 코드가..

BackEnd Skils 2024.11.26

백엔드 사전 지식 (1) - DNS 부터 테스트 그리고 배포까지 살펴보기

1. DNS란? : Domain Name System으로 IP는 인터넷에서 주소 역할을 한다. IP는 총 32비트로 이루어진 IPv4와 128비트로 이루어진 IPv6가 있는데 보통 이런 주소값을 일일이 외우지는 않기 때문에 사람이 외우기 편한 언어로 된 주소를 사용한다. 우리는 이것을 도메인이라고 하고 이런 도메인 주소를 IP 주소로 변경하는 것을 DNS라고 한다. 2. DNS와 IP를 사용한 서버 / 클라이언트 통신 방법1) 클라이언트가 DNS 서버로  www.example.com  으로 접속을 시도 하면 DNS 서버로 IP를 물어본다.2) DNS 서버에서 IP를 클라이언트에게 알려준다. 3) 전달 받은 IP로 웹 서버로 요청을 보낸다. 4) 웹 서버가 클라이언트에게 응답을 보낸다. 3. HTTP로 요..

BackEnd Skils 2024.11.25

BOJ - 15651 N과 M(3)

1. 문제 링크 : https://www.acmicpc.net/problem/156512. 문제 티어 : 실버33. 문제 유형: 백트래킹4. 문제 풀이1) N과 M(1) , N과 M(2)에 이은 백트래킹으로 길이가 M인 수열을 구하는 문제 시리즈이다.2) 같은 수를 여러 번 골라도 된다는 조건이 있기에 start 혹은 i+1 등으로 인덱스를 부여할 필요가 없으며3) 하나의 계산을 끝내고 그 다음 계산을 할 때 이전 선택과 관계 없이 n까지 모두 돌려도 된다는 뜻이다. 4) 3) 과 같이 할 시 console.log로 출력값을 찍는 부분에서 시간 초과가 이루어질 수 있으니 미리 새로운 배열에 문자열을 생성해서 한 번에 출력하여 백준의 시간 초과 문제를 해결하는 방법이다.5) 기존 (1)과 (2) 에서는 c..

BOJ - 15650 N과 M(2)

1. 문제 : https://www.acmicpc.net/problem/156502. 문제 티어: 실버33. 문제 유형 : 백트래킹4. 문제 풀이 : N과 M 문제와 동일하지만 하나가 다른 점은 오름차순으로 정렬이 되어야 한다는 점이다.즉 순서를 보장해야하므로 시작 포인트를 추가해서 인덱스를 지정해주어야 한다는 점이 가장 큰 차이다. 이외 로직은 모두 동일하게 작성하면 된다, 즉 선택할 수 있는 숫자는 항상 이전에 선택한 숫자보다 커야 한다. 5. 문제 코드const fs = require("fs");let input = fs.readFileSync("/dev/stdin").toString().split("\n");let [N,M] = input[0].split(" ").map(Number);let ar..