0. 데이터 보여주기 vs 스토리텔링
1. 개요
(1) 관계형 데이터베이스와 SQL
(2) 네트워크 (LAN,MAN,WAN)와 IP 주소
(3)클라이언트와 서버 사이의 API
(4)API 요청 및 응답 형식 JSON
1. 텍스트 파일 vs 데이터 베이스
ex) 쇼핑몰
- 여기서 데이터는 어떤 형태를 가져야 하는가?
- '회원명','아이디','주문 상품명','상품 가격'등 관계가 이어짐(모두 텍스트)
- '최원영'의 개읹벙보를 수정한다면? '최원영'이외의 많은 사람들이 한꺼번에 CRUD(생성,읽기,수정,삭제)를 요청한다면? '최원영'이 여러명이라면?
- 데이터는 단 1%의 결점도 없어야 함(데이터의 무결성)
- 서비스가 늘어나면 데이터가 계속 쌓이고 텍스트 파일은 점점 늘어남. 그러면 데이터를 찾고 바꿔야 하는 속도도 계속 증가함
만약 엑셀에 다음과 같이 저장한다고 생각해보면?
- 유저데이터: '이름, 성별, 생일, 주소'와 같은 구조로 저장
- 제품데이터:'제품명, 가격' 와 같은 구조로 저장
- 주문데이터:'유저의 1번이 제품의 1번을 샀다'라는 식으로 저장(VLOOKUP과 HLOOKUP 함수로 가능)
- 테이블(Table): 엑셀의 Sheet를 관계형 데이터 베이스(Relational Database)에서는 테이블(Table)이라고 표현
- 스키마(Schema)혹은 데이터베이스(Database): 엑셀 파일 자체
- 관계형 데이터베이스 관리시스템 (RDBMS)
2. SQL DB 테이블 구조
(1) 스키마(schema): 다양한 스키마가 존재하지만 간단히 말해서 구조화 할 수 있는 데이터인지 여부
(2) 인스턴스(instance): 정의된 스키마에 따라 DB에 실제로 저장된 값
(3)튜플(tuple): 테이블의 행
(4) 속성(attribute): 테이블의 열
(5) 도메인(domain):하나의 속성이 가질 수 있는 값
3.네트워크(LAN,MAN,WAN)
3.1 네트워크 이용 사례 (앱 설치, 파일 전송)
protocol 약속된 내용 (규약)
4. IP(Internet Protocol)주소
(1) IP주소: 네트워크 환경에서 컴퓨터(노드)간 통신하기 위해 각 컴퓨터에 부여된 네트워크 상의 주소
(2)IP주소는 위치에 따라, 컴퓨터에 따라 고유함. 디바이스 이동시 계속 변경
(3)IP는 0~255 숫자만 사용
(4)IPv4 vs IPv6: 숫자 구분을 4개에서 6개로 늘임
예 192.168.0.103
(네트워크 주소) (호스트 주소)
5.클라이언트 & 서버 (Client vs Server)
클라이언트를 칭하는 다양한 용어
클라이언트
클라
프론트 엔드
프론트
서버를 칭하는 다양한 용어
서버
백앤드
6. API (클라이언트와 서버사이의)
6.1 API(Application Programming Interface) 소프트웨어 응용 프로그램에서 다른 소프트웨어 구성 요소 또는 서비스와 상호 작용하기 위한 인터페이스를 제공하는 프로그래밍 기술(마치 주방과 고객사이의 점원 역할을 함)
API는 서버 개발자가 개발하고, 클라이언트 개발자는 그 API를 사용
ex)
[클라이언트가 서버에 하는 요청]
- 메세지, 비디오 파일, 이미지 파일을 줘
- 로그인, 회원가입 시켜줘
- 이 메세지 삭제해줘
6.2 RESTful API의 필요성
문제점
서버 쪽 부서가 A부서, B부서 등 서로 다른 기능을 담당하는 수십 개의 부서로 나누어 있다고 가정하면 수십 개의 서로 다른 '잘 됐어' 표현이 날아와서 받는 사람 입장에서는 아주 혼란스럽고 개발자 입장에서도 '잘 됐어'나 잘 안됐어' 에도 체계가 필요하다고 생각
그래서 '잘 됐어'는 200번 대 코드(201,202,..), ;잘 안됐어'에서는 클라이언트 요청에 문제가 있는 경우는 400번 대 코드(401,404,...) 서버에 문제가 있느 ㄴ경우에는 500번 대 코드(500,501,...)로 표현하기로 함
6.3 다른 소프트웨어의 기능이 필요한 상황
6.4클라이언트와 서버 위의 데이터 베이스 시스템
7. API 요청과 응답을 주고 받을 때의 형식
(1) 비정형 Data
ex)동영상, 사진
(2)반정형 Data(옛날엔 xml을 썼음 extensible markup language)
- JSON(JavaScript Object Notation)
- 경량의 Data 교환방식
- 읽고 쓰기에 편한 데이터 포맷 방식
- 언어에 독립적인 데이터 포맷으로 여러 언어에서 사용이 가능
- 언어와 플랫폼에 독립적 → 다른 시스템 간 객체 교환에 용이
- Application의 통신에 쓰이는 데이터 포맷
8. JSON 형식
기본 형식
{
"key1":"value1",
"key2":"value2"
"items":["it1","it2","it3"]
}
배열은 []로 감싸줌
8.1 개발자 대화의 이해
a. 클라이언트 개발자
a.개발1: 클라 개발2:서버