# 클라/ 서버
우리는 다양한 기기를 사용한다. 스마트폰, 태블릿, 데스크톱, 노트북 등등. 이 기기의 공톰점은 '컴퓨터'라는 점이다. 컴퓨터는 CPU, 메모리, 보조기억장치 와 같은 부품을 가지고있다. 그런 부품들을 우리가 직접 제어하면서 컴퓨터를 사용하진 안흔다. 어떤 프로그램들이 그 역할을 대신 해주는데, 그것이 바로 '운영체제'다. 대표적으로 윈도우, Mac OS, iOS, 안드로이드 등이 있다. 이 운영체제 위에 올라가는 프로그램을 개발하는 사람을 클라이언트 개발자라고 한다.
서버사이드에는 서버 컴퓨터가 있다. 서버에서 많이 사용하는 운영체제는 리눅스이며, 기본적으로 안정적이고 무료이기 때문에 많이 쓴다. 그 위에 서버 프로그램을 돌린다. 이 서버 프로그램을 만들어서 서버 컴퓨터에 돌리는 사람을 서버개발자라고 한다.
# API
그렇게 클라이언트와 서버가 만들어지면 이 둘은 API를 통해 요청과 응답을 주고 받는다.
API는 양면을 가지고 있다. 기능을 제공하는 쪽이 서버고, 이 기능을 이용하는 쪽이 클라이언트다. 이때 API는 특정 주소와 메소드 (POST, GST, PATCH, PUT, DELETE)로 이류어져있다. 메소드는 각각 CRUD(Create, Read, Update, Delete)와 매치된다. 정확한 요청을 보내면 서버는 응답해준다. 응답시에는 '성공과 실패' 라는 텍스트 대신 성공은 200, 실패는 400,500번대로 표현한다. 그리고 개발자들은 API문서에 이 모든 내용을 정리한다.
#웹 / 앱 만들기
웹 개발자는 웹 페이지를 만든다. HTML 을 이용해서 뼈대를 잡고, CSS를 통해 디자인을 입힌다. 그리고 Javascript를 통해 긴을릉 붙인다. 이를 빠르고 쉽게 사용하기 위해서는 React.js 나 Vue.js 와 같은 프레임워크를 사용한다.'
애플리케이션 개발자는 iOS 혹은 안드로이드 위에 올라가는 프로그램을 각각 개발한다. iOS는 Swift 혹은 Objective-C 라는 언어를 사용한다. 그리고 애플에서 제공해주는 코코아라는 프레임 워크를 사용하면 iOS 위에돌아가는 프로그램을 보다 빠르고 쉽게 만들 수 있다.
안드로이드는 자바 혹은 코틀린(Kotlin)이란 언어를 사용한다. 그리고 안드로이드에서 제공해주는 프레임워크를 사용하면 안드로이드 위에서 돌아가는 프로그램을 보다 빠르고 쉽게 만들 수있다.
# SQL, DB
서버는 각 요청에 맞는 기능들을 만든다. 각 기능은 대부분 데이터베이스(DB)를 거쳐야한다. 이때 사용하는 언어가 SQL이다. SQL은 데이터베이스 관리시스템(DBMS)에 데이터를 CRUD하기위한 언더이다.
서버개발자는 해당 기능을 만든 뒤, 각 기능에 맞춰 API를 만들고, API문서를 작성한다. 그럼 클라이언트 개발자는 API문서를 보며 특정 주소로 요청을 보내고 응답을 받는다.
# 웹/ 앱 배포와 사용
개발이 끝난 이후에는 후에는 웹과 앱의 처리 결과가 조금 다르다.
웹은 완성 결과물을 서버에 올린다. AWS와 같이 아마존에서 빌린 서버 컴퓨터에 원본 HTML, CSS, Javascript를 올린다. 일반 유저는 특정 도메인을 거쳐 원본 HTML, CSS, Javascript가 있는 서버에 요청을 보내다. 그럼 HTML부터 다운로드 된 뒤 CSS, Javascrit, 이미지, 폰트, 동영상 등등 파일이 일반 유저의 브라우저로 다운로드 된다. 글허게 일반 유저의 컴퓨터에 다운로드 된 HTML, CSS, Javascript 사본은 필요할 경우 서버 API 요청을 보낸다. 그 요청은 데이터베이스가 존재하는 서버 컴퓨터가 보낸다.
애플리케이션 iOS 개발자는 프로그램을 완성하면 앱스토에어 심사를 요청한다. 심사에 통과하지 못한걸 "리젝"됏다고 이야기한다. 심사에 리젝되면 사유도 함께 보내주는데, 이를 시정해서 다시 심사에 올린다. 심사에 통과하면 앱스토어에서 애플리케이션을 볼 수있다. 그럼 사용자는 해당 애플리케이션을 자신의 스마트폰에 다운로드한다. 다운로드 완료되어 설치된 애플리케이션은 필요한 경우 데이터베이스가 잇는 서버에 API요청을 보낸다. 그리고 응답받아 처리한다. 안드로이드 또한 마찬가지.
참고 : 최원영, 비전공자를 위한 이해할 수 있는 IT 지식, 티더블유아이지, 2020
'Study > 용어익히기' 카테고리의 다른 글
브라우저 작동원리 (0) | 2023.05.03 |
---|---|
헷갈리는 IT용어 이해하기__8. 협업 (feat. git, xd ... ) (0) | 2021.12.05 |
헷갈리는 IT용어 이해하기__7. 프레임워크, 라이브러리 (0) | 2021.12.05 |
헷갈리는 IT 용어 이해하기__6. 데이터베이스 (0) | 2021.11.28 |
헷갈리는 IT 용어 이해하기__5. 웹 이해하기 (0) | 2021.11.27 |