티스토리 뷰

1. 데이터 교환형식

1) JSON

① JSON (JavaScript Object Notation)

  • Javascript 객체 문법으로 데이터를 저장하거나 전송할 때 많이 사용되는 경량의 DATA 교환 형식
  • python, javascript, java 등 여러 언어에서 데이터 교환형식으로 쓰인다.
  • 사람과 기계 모두 이해하기 쉽고 용량이 작다 →  최근에는 JSON이 XML을 대체해서 데이터 전송 등에 많이 사용한다.
  • HTML과 자바스크립트가 연동되어 빠른 응답이 필요한 웹 환경에서 많이 사용되고 있습니다.
  • 객체문법말고도 단순 배열, 문자열도 표현 가능

② JSON 특징

  • Javascript 객체문법
    • 키(key)과 값(value)으로 구성된다
    • 자바스크립트를 이용하여 JSON 형식의 문서를 쉽게 자바스크립트 객체로 변환할 수있다.
    • 이미 존재하는 키를 중복선언하면 나중에 선언한 해당 키에 대응한 값이 덮어쓰인다.
    • JSON형식에서는 null, number, string, array, object, boolean을 사용할 수 있다.
{
"name" : "kundol",
"name" : "king",
"name" : "king"
}

// 결과
// name : king
  • 다른 프로그래밍 언어를 이용해서도 쉽게 만들 수 있다.
    • 객체, 해시테이블, 딕셔너리 등으로 변환되어 쓰임
    • 특정 언어에 종속되지 않으며, 대부분의 프로그래밍 언어에서 JSON 포맷의 데이터를 핸들링 할 수 있는 라이브러리를 제공한다.
json in javascript = javascript object
json in python = dict
  • 단순 배열, 문자열 표현
    • 자바스크립트의 문법과 굉장히 유사하지만 텍스트 형식일 뿐이다.
단순배열 : [1, 2, 3, 4]
문자열 : “파카파카파카“

 

③ JSON 직렬화,역직렬화

  • 직렬화 : 외부의 시스템에서도 사용할 수 있도록 바이트(byte) 형태로 데이터를 변환하는 기술
  • 역직렬화 : 그 반대 

  • JSON.stringfy(JSON형식의 객체) 
    • 객체 => 문자열로 변환 → 직렬화(serialize)
    • 통신할 때는 문자열로 직렬화하여 주고 받는 것이 안전하다.
  •  JSON.parse(JSON형식의 문자열) 
    • 문자열 => 객체로 변환 역직렬화(deserialize)
    • 통신으로 받은 문자열은 객체로 역직렬화하여 사용하는 겻이 편리하다.

2) XML

①  XML (Extensible Markup Language)

  • 마크업 형태를 쓰는 데이터교환형식
  • 데이터를 저장하고 전달할 목적으로 만들어졌으며, 저장되는 데이터의 구조를 기술하기 위한 언어
  • 새로운 태그를 만들어 추가해도 계속해서 동작하므로, 확장성이 좋다.
  • 보통 XML은 데이터 검증이 필요한 곳에서 데이터 무결성을 스키마로 검증할 수 있기 때문에 사용된다.
  • 구성
    •  프롤로그(version, encoding) + 루트요소(단 하나만) + 하위 요소들
<?xml version="1.0" encoding="UTF-8"?>
<OSTList>
<OST like="1">
<name>마녀 배달부 키키</name> <song>따스함에 둘러쌓인다면</song>
</OST>
<OST like="2">
<name>하울의 움직이는 성</name> <song>세계의 약속</song>
</OST>
</OSTList>

② HTML과 XML의 차이

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,
initial-scale=1.0">
<title>Document</title>
</head>
<body>
<p></p>
<div></div>
</body>
</html>
  HTML XML
용도 데이터를 표시 데이터를 저장
확장성 미리 정의된 태그가 있다
-> 해당 태그만 사용해야 한다.
-> 확장성이 낮다
사용자가 고유한 태그를 만들고 정의 가능하다
-> 확장성이 좋다

대소문자 대소문자 구분하지 않는다 대소문자를 구분한다.

③ JSON과 XML차이

{
"지브리OST리스트" : [
{
"name" : "마녀 배달부 키키",
"song" : "따스함에 둘러쌓인다면"
},
{
"name" : "하울의 움직이는 성",
"song" : "세계의 약속"
}
]
}
  JSON XML
용량 종료 태그를 사용하지 않습니다.
-> XML과 비교했을 때 가볍다.
종료태그를 사용한다
-> JSON과 비교했을 때 무겁다
변환 JSON.parse() 하나면 데이터 변환 가능 Javascript Object로 변환할때 해줘야 하는 작업이 많다.
빠르기 데이터를 빠르게 읽고 쓸 수 있다 JSON과 비교했을 때 느리다.

[참고] XML 활용예시

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>http://www.example.com/foo.html</loc>
<lastmod>2018-06-04</lastmod>
</url>
<url>
<loc>http://www.example.com/abc.html</loc>
<lastmod>2018-06-04</lastmod>
</url>
</urlset>
  • 대표적으로 sitemap.xml에 쓰인다.
  • sitemap.xml : 검색 엔진에 게시 될 자신의 웹사이트 콘텐츠의 크롤링 및 색인을 돕는 페이지 목록의 역할
  • 사이트가 매우 크거나 서로 링크가 종속적으로 연결되지 않은 경우 크롤러가 일부 페이지를 누락하는 일이 있는데 이를 sitemap.xml이 방지하고 모든 페이지들을 크롤링할 수 있도록 해준다.

[용어 정리] 크롤링 : 웹사이트들을 돌아다니면서 정보를 수집하는 행위


2. 클라우드 

1) 가상머신

① 가상머신

  • 실행 중인 애플리케이션과 운영체제를 포함하여 컴퓨터와 거의 동일한 모든 기능을 수행할 수 있는 컴퓨터의 가상화된 인스턴스
  • 컴퓨터의 하드웨어를 소프트웨어적으로 구현한 것
  • 실제로 있는 컴퓨터 시스템을 여러 명의 사용자가 동시에 사용할 수 있게 하기 위해서 사용한다.

② 배포방식 

  • 전통적 배포방식
    • 물리적인 컴퓨터 한 대에 하나의 OS를 깔고 여러 가지 프로그램을 설치하는 방식.
    • 계정을 나눠 여러명의 사용자가 이용할 수 있다.
    • 같은 OS를 공유하기 때문에 계정들에서 설치한 프로그램들이 다른 프로그램들에 영향을 미친다.
  • 가상화 배포방식
    • 가상머신을 기반으로 배포하는 방식
    • 전통적 배포방식과 다르게 한 대의 컴퓨터를 가지고 여러개의 OS를 구동할 수 있게 해준다.
    • →  CPU, RAM을 물리적으로 갈아끼는 것이 아니라 설정만으로 이를 수행할 수 있게 되었다.

  • 하이퍼바이저 : 하나의 시스템 상에서 가상 컴퓨터를 여러 개 구동할 수 있도록 해 주는 중간 계층
  • 하이퍼바이저 위에 여러개의 가상머신을 구축하고 그 위에 OS, 앱이 올라가는 형태 → 가상머신을 독립적으로 수행할 수 있다.
  • 가상화라는 기술 때문에 한대의 하드웨어로 여러명의 사용자들에게 독립적으로 클라우드 서비스를 할 수 있다.

OS가 공유가 안되기 때문에 가상머신에 일일히 OS를 설치해야 한다.


[용어 설명] 샌드박스 되었다.

  • 독립적으로 가상머신이 구축되어 서로 전혀 상호작용하지 않으며 한 가상 머신위의 프로그램은 다른 가상머신위의 프로그램에서 볼 수 없는 형태를 샌드박스되었다라고도 합니다.

2) 오프프레미스와 온프레미스

① 오프프레미스 ( Off-premises )

  • 클라우드 서비스 : 다른 회사의 공급자가 호스팅하고 인터넷을 통해 사용자에게 제공되는 소프트웨어
  • 자체 인프라나 하드웨어 설치 없이도 애플리케이션과 리소스에 쉽고 싸게 이용이 가능하다.
  • 서버를 직접 구매할 때 고려해야 할 전력, 위치, 서버 세팅, 확장성을 고민하지 않고 서비스 운영에만 집중할 수 있다.

② 온프레미스(on-premise)

  • 전통적인 방식으로 컴퓨터 또는 서버시를 갖추어 운영하는 방식 
  • 기업이나 개인이 자체 시설에서 보유하고 직접 유지 관리하는 프라이빗 데이터 센터(IDC)을 의미
  • 자체적으로 운영하는 것이 자율성은 높지만, 서버의 유지보수면에서는 어려움을 겪을 수 있다. 
  • ex) 네이버의 데이터센터 각

 

3) IaaS와 PaaS, SaaS

① IaaS(Infrastructure-as-a-Service)

  • 인프라형 클라우드서비스
  • 클라우드가 단지 인프라를 제공한다. → 기반시설만을 공급해준다.
  • 서버 운영이 쉽고 편리하여 효용성이 높다.
  • 프로그램들을 개발자가 직접 설치해야 하는 대신 특정 서비스에 종속되지 않습니다.
  • ex)  AWS의 EC2, NCP

② PaaS(Platform-as-a-Service)

  • 플램폼형 클라우드 서비스
  • 클라우드가 플랫폼을 제공한다.   기반시설 + 개발 가능한 서비스도 제공
  • 프로그램들이 설치되어있어 필요한 프로그램들을 내려받아 사용 가능하다.
  • 모니터링, CI/CD가 제공됩니다
  • ex) heroku : 자유롭게 클릭 몇번으로 여러가지 서비스들을 설치가 가능함.

③ SaaS(Software as a Service)

  • 서비스형 클라우드서비스
  • 웹페이지를 통해 소프트웨어를 제공한다. -> 소프트 웨어 자체를 제공
  • 완전한 서비스를 클라우드서비스로부터 제공받아 사용합니다.
  • ex) 구글DOCS, 365 Office

④ PaaS와 IaaS 비교

  IaaS PaaS
종속성 유연성이 좋다
플랫폼에 종속되지 않는다.
유연성이 나쁘다
플랫폼에 종속됩니다.
이식성 이식성이 높음 이식성은 낮음
운영비 효율 운영비 효율 낮음 운영비 효율 좋음

 

4) 컨테이너와 도커

① 컨테이너

  • 애플리케이션이 한 컴퓨팅 환경에서 다른 컴퓨팅 환경으로 빠르고 안정적으로 실행되도록 코드와 모든 종속성을 패키징하는 소프트웨어의 표준 단위
  • 컨테이너는 OS를 공유하기 때문에 빠르고, 경량화되어있으며 격리성도 좋다.
  • OS에 문제가 생기면 다른 앱에도 영향을 미칠 수 있다.

② 도커

  • 컨테이너 필요한 기능을 거의 모두 제공하는 플랫폼
  • 애플리케이션 구동에 필요한 환경설정관련 절차를 도커파일에 작성하고 그 후 빌드를 하면 도커이미지가 생성이 되고 도커이미지를 실행시키면 도커컨테이너가 만들어진다.
  • 만들어진 도커컨테이너에 설정된 프로그램, 데이터 등이 실제 컴퓨팅자원 위에서 돌아가게 됩니다.

③ 도커 과정

  1. 도커파일 
    • 패키지, 환경변수설정 등을 기록한 파일
    • 도커 파일을 빌드해 도커이미지로 변환시킨다.
  2. 도커이미지
    • 컨테이너 실행에 필요한 파일과 설정값, 데이터 등을 포함된 상태값이며 불변한다.
    • 하나의 이미지에서 여러개의 컨테이너를 생성할 수 있다.
    • 컨테이너의 상태와는 무관하게 이미지는 그대로 존재한다.
    • ex) 1대의 서버에 환경설정해야 한다면 미리 만들어 놓은 이미지를 다운받아서 컨테이너를 만들면 된다.
  3. 도커컨테이너
    • 컨테이너가 실행시키면 도커이미지에 설정된 프로그램, 데이터 등이 실제 컴퓨팅자원과 연결된다.

 

3.라이브러리와 프레임워크 차이 + API

 

1) API 

① API (Application Programming Interface)

  • 둘 이상의 컴퓨터 프로그램이 서로 통신하는 방법이자 컴퓨터 사이에 있는 중계 계층
  • A라는 컴퓨터가 요청을 하고 B라는 컴퓨터가 응답을 한다고 했을 때의 어떻게 통신할 것인지, 어떠한 데이터를 주고 받을 건지 등에 대한 방법(HTTP, HTTPS 프로토콜을 사용할 것인지, GET, POST 등의 방식 등..)이 정의된 중계계층

② 인터페이스(interface)

  • 서로 다른 두 개의 시스템, 장치 사이에서 정보나 신호를 주고받는 경우의 접점이나 경계면
  • 해당 컴퓨터의 내부서버가 어떻게 구현되어있는지는 상관없이 인터페이스를 통해 통신 등이 가능
  • ex) 삼성 갤럭시 UI, 네이버 웹툰

③ API의 작동방식

  • 중계계층으로 끼어져있어서 작동된다.
  • 사용자가 브라우저를 통해서 서버에 요청을 하게 되면 API가 중계계층 역할을 하며 요청을 처리한다.
  • 직접 서버의 데이터베이스에 접근 하는 것을 방지하기도 한다.

④ API 장점

  • 제공자는 서비스의 중요한 부분을 노출시키지 않아도 된다.
    • ex) DB 설계 구조,데이터베이스의 테이블 정보, 서버의 상수값등을 노출시키지 않고 사용자에게 정보제공 가능
  • 사용자는 필요한 정보만을 받을 수 있다.
  • OPEN API의 경우 앱 개발 프로세스를 단순화 시키고 시간과 비용을 절약할 수 있습니다.
    • ex) 소셜 로그인api를 사용하면 로그인 로직 구현을 생략할 수 있다.
  •  내부 프로세스가 수정되었을 때 API를 매번 수정하는 것이 아닌 API가 수정이 안되게 만들 수 있다. → 내부 DB, 서버의 로직이 변경이 되어도 매번 사용자가 앱을 업데이트하는 일은 줄어들 수 있다.
    • ex) DB튜닝
  • 제공자는 데이터를 한곳에 모을 수 있다.
    • ex) 해당 사이트에 방문하는 방문자, 어떤 특정한 것을 클릭하는 사용자에 대한 이벤트를 집계하고 싶을 때 해당 API를 만들고 해당 이벤트가 발생하면 해당 API를 호출하게 만들면 해당 데이터를 한 곳에 모을 수 있다.

⑤ API 종류

  • private
    • 내부적으로 사용된다
    • 주로 해시키를 하드코딩해놓고 이를 기반으로 서버와 서버간의 통신
    • 비즈니스 파트너와도 사용될 수 있다. → 비밀스럽게 해당 파트너와 해시키를 공유해 통신
  • public 
    • 모든 사람이 사용할 수 있다.
    • 많은 트래픽을 방지하기 위해 하루 요청수의 제한, 계정당 몇개 등으로 관리한다.

2) 라이브러리와 프레임워크 

  • 라이브러리
    • 소프트웨어를 개발할 때 컴퓨터 프로그램이 사용하는 비휘발성 자원의 모임
    • 공통으로 사용될 수 있는 특정한 기능들을 모듈화한 것
    • 한마디로 개발에 필요한 것들을 미리 구현해놓은 도구
    • ex) JAVA의 spring framework, Python의 Django
  • 프레임워크
    • 복잡한 문제를 해결하거나 서술하는 데 사용되는 개본 개념 구조
    • 공통으로 사용될 수 있는 특정한 기능들을 모듈화한 것이다.
    • → 한마디로 개발자가 개발을 쉽게 할 수 있도록 뼈대를 제공해준다.

① 라이브러리와 프레임워크의 차이

[출처] https://code-lab1.tistory.com/284

  라이브러리 프레임워크
규칙 폴더명, 파일명 등에 대한 규칙이 없다 폴더명, 파일명 등에 대한 규칙이 있다
유연성 유연성이 좋다 유연성이 나쁘다
제어의 흐름 개발자에게 제어의 흐름이 있어서 능동적으로 라이브러리를 호출해서 사용한다. 프레임워크에게 제어의 흐름이 있어 개발자가 코드에 신경을 덜 쓰게 해준다.

참고자료

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함