스파르타 코딩클럽에서 '1시간만에 끝내는 직장인 코딩 용어 해설'이라는 강의를 무료로 제공해주고 있어서, 이참에 간단하지만 정확하게 알지 못했던 코딩 용어를 정리해보려 한다.
스파르타 코딩클럽 사이트는 다음과 같다. 신규가입 시 20000 포인트 쿠폰도 제공하고 있으니 한 번 들어보길 추천한다!
컴퓨터와 인터넷
컴퓨터는 CPU, RAM, 저장 장치 등 다양한 기계를 모아둔 것이다.
하지만 우리는 컴퓨터에게 직접적으로 어떤 명령을 내릴 수 없다. 이때 운영체제(Operating System)라는 것을 통해 인간의 명령을 기계가 알아듣고 행할 수 있도록 해준다.
한마디로, 운영체제는 인간의 언어를 기계 언어로 만들어준다.
예를 들어, 안드로이드, 맥OS, 윈도우즈, 리눅스 등이 있다.
이때 리눅스는 무료 오픈소스로, 회사 등 큰 규모의 단체에서는 운영체제에 들이는 비용을 줄이고자 이 리눅스라는 운영체제를 자주 사용한다. 회사의 서버 운영체제에 많이 사용된다.
컴퓨터에 키보드와 마우스를 통한 명령이 아닌, 직접적으로 명령을 내리는 것을 프로그래밍(코딩)이라 한다.
따라서 프로그래밍 언어라는 것은, 프로그래밍을 하기 위한 수단이다. 각 언어마다 속성(특성)이 다르므로, 목적에 따라 다양하게 사용한다.
프로그래밍(코딩)을 통해 자주 사용하는 기능을 짜둔 것을 프로그램이라 한다.
또한, 컴퓨터끼리 소통을 하는 것을 인터넷이라 한다.
이때 필요한 규칙이 매우 많이 있는데, 그 중 하나가 웹 통신이다. 대표적인 예시로 'http', 'https'가 있다. https가 좀 더 보안성이 좋다 정도만 알아두자.
웹서비스 동작 방식
서버는 중간에서 데이터를 보내주거나, 저장해주는 역할을 한다. (모든 컴퓨터가 서버가 될 수 있다.)
따라서 사용자가 많아지면 서버가 터지는 현상이 발생할 수 있다.
컴퓨터를 사람에 비유한다면, 서버는 직업의 개념이다. 예를 들어, 같은 컴퓨터가 DB, 웹서핑, 데이터 저장 등 여러 역할을 할 수 있다.
우리가 브라우저에 'naver.com'이라고 치고 엔터를 누르는 것은 브라우저가 웹 서버에서 해당 사이트 정보(데이터)를 받아온다. 그 후에, 사용자가 볼 수 있도록 표현해주는(그려주는) 것이 브라우저의 역할이다.
이때, 어떤 웹서비스던 간에 다음과 같은 요소를 주고받는다.
- HTML : 사이트의 뼈대를 나타낸다. (... 밑에 ...가 있다 등)
- CSS : 사이트를 예쁘게 보여준다. (버튼의 색이 초록색이다 등)
- JavaScript : 움직임을 나타낸다. (링크, 클릭 등)
데이터를 이렇게 주고받을 때, 특정 규칙이 있다. 이것을 JSON(제이슨) 방식이라 한다.(key:value 형태)
웹은 위 3가지의 정보를 다 받아와서 브라우저를 통해 한 번에 띄워주고, 앱은 이와 같은 JSON 형식의 {key : value}값들을 주고받으며 서버와 소통한다.
서버-클라이언트 통신
서버 간의 통신은 어떻게 이루어지는지 알아보자.
은행을 서버로, 고객을 클라이언트로 비유해보자.
고객이 잔고를 확인하고 싶을 때, 번호표를 뽑고 입출금 창구에 가서 절차를 진행하게 된다.
이는 은행과 미리 약속해둔 곳(예금 창구)에, 약속해둔 데이터(신분증)를 들고 가야 잔고(응답)를 알려준다.
컴퓨터에도 이와 같이 창구(약속해둔 길, 장소)가 존재한다. 이를 API라 한다.
클라이언트 개발자는 개발 전에 이러한 API를 설정하고, 문서로 작성한다. 이 문서를 API 명세서라 한다.
웹통신에서 주소는 이렇게 구성된다.
"https://[서버의_주소]/[API_주소]?[필요한_데이터_이름]=[필요한_데이터]"
예를 들어, "https://[movie.naver.com]/[movie/bi/mi/basic.naver]?[code]=[10016]"라는 사이트는 '네이버 영화'서버에서 'movie/bi/mi/basic.naver'라는 API에서 'code'라는 이름의 데이터 '10016'을 지정하는 사이트를 여는 것을 말한다.
개발 언어, 프레임워크(Framework)
프로그래밍 언어는 OS에 명령을 내리는 언어라고 하였다.
하지만, 프로그래밍 언어로 서버를 만들기는 너무 어렵다.
따라서 미리 만들어놓은 세트(set)가 존재하는데, 이를 프레임워크(framework)라 한다.
각각의 프로그래밍 언어로 만든 대표적인 프레임워크는 다음과 같다.
- Java로 만든 framework : Spring
- Node.js로 만든 framework : Express
- Python으로 만든 framework : Django, Flask
프레임워크는 매우 많아서, 대표적이고 유명한 것들을 사용하는 경우가 많다.
이제 언어 별로 용도와 특징을 살펴보자.
- 웹 프론트엔드 : HTML, CSS, JavaScript → 3개를 엮어주는 framework : React.js (javascript로 만듦)
- 서버 : 매우 많은 언어 (java, ruby, C#, Node.js, Python 등) 존재
- Java : 어렵고, 형식이 많다. 큰 회사에서 많이 사용한다.
- Python : 쉽게 입문할 수 있고, 자유롭다. 데이터분석과 인공지능 등에도 사용된다.
- Node.js : JavaScript와 거의 문법이 같다. (프론트엔드, 백엔드 언어가 비슷!) 따라서 스타트업에서 많이 사용한다.
- Swift : 아이폰 어플을 만들 때 사용한다.
- Kotlin : 안드로이드 앱을 만들 때 사용한다.
- C++ : C언어 계열은 현업에서보다 임베디드, 칩 등에 많이 사용된다.
아키텍쳐, DB(Database)
보통 프론트엔드보다 백엔드 개발자가 훨씬 많다.
서버는 다양한 기능을 하는 구성 요소들의 집합체이다. 서버의 구성요소는 크게 '웹서버 + 데이터베이스(DB)'로 볼 수 있는데, 서버의 규모가 커지면 이를 분리한다.
만약 이보다 규모가 더 커진다면, 데이터베이스는 보통 그대로 두고(데이터는 가급적 한 곳에서 관리하는 것이 좋다.), 웹 서버를 여러개로 늘린다. 여기서 더 커진다면 부득이하게 데이터베이스를 이미지용, 텍스트용으로 나눈다.
데이터베이스는 수많은 데이터를 잘 찾기 위해 존재한다. 이때 정리된 항목을 인덱스라 한다.
최근댓글