목록Devops Bootcamp (27)
Fairy ' s
Q 1. RDBMS에서 스키마 디자인 중 필드값으로 배열을 넣어야 하는 경우가 발생했습니다. 선배 개발자에게 물어보니, 이 경우에는 정규화가 필요하다고 조언해줍니다. 다음은 사용자 정보가 담긴 user 테이블입니다. 사례를 통해 어떻게 테이블을 정규화할 지 고민해보세요. ID Name Age E-mail Hobby 1 김코딩 19 kimcoding@aaa.com 코딩 2 박해커 28 hackerpark@bbb.com 해킹 3 최고수 18 choigosu@ccc.com [코딩, 해킹]
데이터베이스 관계형 데이터베이스 비관계형 데이터베이스 레플리카 데이터베이스 데이터를 저장하고, 요청 시 해당 데이터를 찾아서 제공한다. 데이터베이스 검색 성능이 낮을 때, 좀 더 효율적이게 특정 키의 값을 확인하고 제공하기 위해 인덱스를 이용한다. 인덱스를 사용하지 않으면 요청받은 데이터를 찾기 위해 전체 데이터 베이스를 스캔해야하는 문제가 발생한다. 특정 기준으로 인덱싱 되어 있다면, 인덱싱 후 검색 시 효율성이 증가한다. 인덱스 - 데이터베이스에 저장된 기본데이터에서 파생된 부가적인 메타데이터 (복사본) - 원하는 데이터의 위치를 찾는데 도움을 주는 이정표 역할 (ex. 목차) - 인덱스의 추가 삭제는 허용되지만, 데이터베이스의 내용에는 영향을 주지 않고, 쿼리 성능에만 영향을 준다. - 쿼리 성능이..
서버 ? 하드웨어적 : 정적인 파일들이 제공되고, 서버 애플리케이션이 실행되는 컴퓨터. 소프트웨어적 : 정적인 파일이나 서비스를 제공하는 애플리케이션 그 자체 즉, 서버는 사용자의 요청을 받고 이에 따른 응답과 데이터를 보내준다. 서비스를 제공하는 컴퓨터 내의 프로그램(프로그램)이며, 프로그램 실행되는 컴퓨터(하드웨어)도 서버이다. 웹 서버 - 클라이언트로부터 HTTP 요청을 받아들이고, 웹 페이지를 그대로 반환하는 서버 - 웹 페이지 : 그림, CSS, JS 등 정적 파일 - 정적 파일들을 브라우저에 그대로 전달하기 때문에 정적 웹 서버 라고 부르기도 한다. - ex. nginx, Apache Web Server 등 웹 애플리케이션 서버 (WAS) - 웹 페이지를 전달하는 역할을 하기도 하지만, 핵심 ..
HTTPS HTTP에 Secure을 더한 보안이 강화된 HTTP 비대칭 키 암호화 - ex. 암호화한 키 A는 한 쌍인 다른 키 B로만 복호화 가능 - 서버는 한 쌍의 키인 A와 B중에 하나는 숨겨두고 다른 하나는 클라이언트에 공개하여 데이터를 안전하게 전송 1. Hand Shake : 서로를 확인하고 서버는 공개키와 인증서 정보를 클라이언트에 전송 2. 비밀 키 생성 : 클라이언트와 서버는 서로 만들고 교환한 임의의 정보를 바탕으로 비밀 키를 생성 각자 생성한 키를 바탕으로 클라이언트가 테스트용 데이터를 만들어낸 비밀키로 암호화해서 전달 3. 상호 키 검증 : 서버 역시 만들어진 비밀키로 복호화를 하고 다시 암호화를 해서 클라이언트로 전달 클라이언트가 같은 내용의 데이터를 복호화하는데에 성공했다면, 성..
REST API - 데이터나 자원을 HTTP URI로 표현하는 데에 목적이 있다. - API 작성을 위해서는 어떠한 리소스를 요청/응답으로 주고 받을 것인지, 해당 리소스에 어떤 내용을 포함하는지 보아야한다. - 리소스 : 데이터 모델링의 한 부분으로 데이터를 여러 개의 표 형식으로 정의할 수 있다. 이것을 관계형 데이터 모델링 이라고 한다. 관계형 데이터베이스 - 행과 열(필드)로 구성된 표 형식으로 표현된다. - 데이터를 넣을 때는 모든 값이 일관된 자료형이어야 한다. - 필드 정보(스키마)만 포함하고 싶을 때는 자료형을 반드시 같이 적어주어야 한다. HTTP API - 데이터베이스 같은 데이터가 HTTP 프로토콜을 통해 전달되려면, HTTP body는 문자열로만 이루어져 있기 때문에 표를 문자열로만..
위의 사진을 통해 유추할 수 있는 HTTP 구조, 요청과 응답, 헤더 등 내용을 작성해봅시다. General Request URL : 요청한 도메인 주소가 http://toss.im/ 이다. Request Method : GET 요청을 통해 toss 서버에 읽기 또는 검색 요청을 보냈다. Status Code : 상태코드가 200. 즉, 요청을 성공적으로 인식하고 수용했다. Remote Address : 요청을 보낸 클라이언트의 IP 주소이다. Referrer Policy - 'strict-origin-when-cross-origin' : 헤더에 참조 페이지 전체의 URL을 포함한다. - 'no-referrer' : 헤더에 어떤 정보도 포함하지 않는다. 응답 헤더 (Response Header) Conn..
Runtime (런타임) - 프로그램을 실행하는 환경 - JavaScript의 런타임은 node.js이다. NPM (Node Package Manager) - 필요한 모듈을 다운로드 할 수 있는 모듈 스토어 - 리눅스의 패키지 매니저가 apt이고 macOS의 패키지가 brew이듯, node.js 생태계의 패키지 매니저는 npm이다. - package.json : 프로그램을 실행시키기 위해 필요한 모듈의 이름, 실행 방법, 테스트 방법 등이 명시되어 있다. 프로그램을 실행시키기 위해 필요한 실제 모듈은 따로 'node_modules'라는 폴더에 저장되어 있다. - package.json 에서 필요하다고 하는 모듈은 npm install 명령어를 입력하면 node_modules 라는 디렉토리가 생기며 자동 ..
HTTP (HyperText Transfer Protocol) html 과 같은 문서 전송을 위한 응용 계층 프로토콜 HTTP는 무상태성 (Stateless)이라는 특징을 가지고 있다. 무상태성 (Stateless) : 서버는 동일한 클라이언트의 요청에 대한 정보를 유지하지 않으며, 독립적인 응답으로 응답한다. 즉, 상태를 저장하지 않는다는 뜻이며, 필요에 따라 다른 방법(쿠키-세션, API 등)을 통해 상태를 확인할 수 있다. HTTP messages : 클라이언트와 서버 사이 데이터가 교환되는 방식 - start line : 항상 첫 번째 줄에 위치하며, 요청이나 응답의 상태를 나타낸다. (응답에서는 'status line'이라고 부른다.) - HTTP headers : 요청을 지정하거나, 메시지에 ..