Fairy ' s
[Book] 비전공자를 위한 이해할 수 있는 IT 지식 #1 본문
Devops Bootcamp의 본격적인 강의 시작 전,
IT 지식에 대한 기초적인 내용이 정리되어 있는 책을 정독하였다.
이 게시글에서는 1장부터 5장까지의 내용을 정리하였다.
6장 부터 10장 까지의 내용과 후기는 2편을 참고해 주세요!
비전공자를 위한 이해할 수 있는 IT지식
1 ~ 5장
프로그래밍 언어 & 운영체제 (OS)
프로그래밍 언어를 구분하는 기준
- 고수준 : 인간 친화적인 언어 / 일반적으로 사람들이 사용하는 컴퓨터의 소프트웨어에 사용
- 저수준 : 컴퓨터 친화적인 언어 / 메인 기능이 있는 가전제품(TV, 라디오, 프린터 등)에 사용
- 저수준 ~ C언어 < Java < Python ~ 고수준
네트워크, 클라이언트, 서버
게임 산업을 네트워크의 발전에 큰 기여를 했다. 게임을 하기 위해 컴퓨터 부품과 연결 속도는 더 빠르고 좋아졌다.
이렇게 컴퓨터와 컴퓨터를 연결하며 LAN이라는 것이 생겼는데, LAN에서 MAN, MAN에서 WAN이 되기까지 10~20년이 걸렸다.
이런 네트워크들을 무선으로 만들기도 하며, 3G, 4G, 5G라는 것도 개발되었다.
카카오톡이 다운로드 되는 과정
앱 스토어에 다운로드 버튼 클릭 => 가까운 기지국으로 신호 전송 => 신호가 WAN을 따라 최종 목적지로 이동 => 애플의 컴퓨터가 '카카오톡 설치 파일'을 컴퓨터로 전송 => 다운로드 중이라는 화면이 뜨고 잠시 후 설치 완료 => 앱 클릭 후 실행 => 컴퓨터의 보조 기억 장치에 카카오톡 실행 파일이 저장 => 실행에 필요한 부분들이 메모리 위로 올라옴 => CPU가 이 데이터들을 처리하며 카카오톡이 동작됨
기업에서 무료 운영체제를 사용할 경우에 고장이 발생하면 누군가에게 AS 요청을 하거나 책임을 물을 수 없지만, 유료 운영체제를 사용하면 품질을 보장 받는다는 점에서 여러 기업에서 유료 운영체제를 사용한다.
API와 JSON
API는 요청을 보내는 쪽과 응답을 주는 쪽이 여러 곳으로 정해져 나뉘어 있고, 해당하는 주소는 '서버주소(서버 컴퓨터가 위치한 곳의 주소)/A'의 형태로 정의 되어 있다. 서버주소 뒤에 어떤 문자를 쓰느냐에 따라 다른 기능을 수행하도록 정의한다.
이러한 기능인 API, 그리고 서버 주소를 서버 개발자가 만들고 정의하며, 그 결과물이 서버 프로그램이다. API를 통해 요청과 응답을 주고받을 때에는 데이터도 같이 담긴다.
요청에는 CRUD라는 4가지 요소가 존재하는데, 이 요청들은 위에서 말한 '컴퓨터주소/A' 와 같은 각자의 주소를 가진다. 어떠한 기획과 개발을 할 때 항상 CRUD 관점에서 데이터를 바라보아야 한다. 만약 CRUD 중 특정 기능이 없는 기획이라면, 그 기획 의도가 명확해야 하며, 이유도 설명할 수 있어야 한다.
이렇게 CRUD마다 고유의 주소가 생기면 주소의 양이 많아질 때마다 버그가 생길 수 있고, 주소가 겹칠 수도 있다. 그렇기 때문에 조금 더 체계적으로 API를 관리하기 위한 사회운동인 REST(RESTful API라고도 부른다)가 만들어진다.
클라이언트의 요청에 대한 응답을 숫자로 정의하여 표현하고, 이것의 이름은 'HTTP 상태 코드' 이다. 예를 들어 요청에 의한 답이 잘 해결됐다는 답이면 숫자 200을 출력하고, 잘 안됐다는 답이면 숫자 400(클라이언트의 요청에 문제가 있는 경우) 혹은 500(서버에 문제가 있는 경우)을 출력하도록 하였다. 이러한 긍정과 부정의 정보 외에도 응답에 데이터를 담을 수 있는데, 이렇게 요청과 응답에 데이터를 담아 주고 받음으로써 API 요청이 완성된다.
어디에선가 요청을 보낼 때 그 요청과 응답마다 형식이 다를 수 있는데, 형식이 다르면 그 형식을 처리하기 위한 코드를 또 적어줘야 한다. 때문에 만들어진 유명한 공통된 형식에 XML이 있는데, 현재 가장 유명한 형식은 JSON이다.
애플리케이션
애플리케이션에는 1.0.0 과 같은 형식의 버전이 존재하는데, 작은 변화가 생길 시 1.0.1 같이 뒷 자리를 올려주고, 큰 변화가 있을 경우 앞자리를 올려 2.0.0 이런 식으로 표현한다.
스마트 폰에는 앱을 다운로드 할 수 있는 스토어가 존재하는데 iOS는 '앱 스토어', 안드로이드는 '구글 플레이 스토어' 가 있다. 두 스토어는 차이점이 있는데, 앱 스토어는 직원이 직접 앱을 살펴보고 버그가 있으면 스토어에 올리는 것을 거절한다. 이 것을 '리젝(Reject)' 이라고 부르고, 만약 앱 스토어에서 리젝 당할 시 애플에서 리젝 사유를 명확하게 제시해주며, 해당 문제만 고쳐지면 통과가 되어 앱 스토어에 등록이 가능하다. 이렇게 까다로운 앱 스토어에 비해 구글 플레이 스토어는 상대적으로 심사 과정이 거의 없어서 반나절 정도의 빠른 시간 안에 스토어에 반영된다.
위의 문단에서 보면 안드로이드가 더 편리할 것 같지만, 구글의 지침에 맞지 않는 앱이 있다면 구글은 예고없이 스토어에서 앱을 내려버린다. 그리고 해당 앱의 복구에 대해 구글과 논의하려면 정말 오랜 시간이 걸린다. 반면에 애플은 사전에 테스트를 진행하기에 이런 경우가 적다. 그럼에도 불구하고 애플의 지침에 어긋난 것이 발견되면 애플은 경고장을 보내고 수정하지 않을 경우 앱을 내리는 등 추가적인 조치를 취하고, 안드로이드에 비해 논의가 빠르고 활발하다.
따라서 애플은 깐깐한 심사에 의해 스토어에 등록된 애플리케이션의 수가 적지만, 안드로이드는 더 많은 애플리케이션을 보유하고 있다. 하지만, 심사가 느슨해 이상하거나 동작하지 않는 애플리케이션도 많다.
단어 정리 / (ABC 가나다 순으로 정리하였다.)
API
- 클라이언트, 서버와 같은 서로 다른 프로그램에서 기능을 사용하기 위해 요청과 응답을 주고 받을 수 있게 만든 체계
CPU (Central Processing Unit)
- 컴퓨터의 머리 역할
CRUD (요청의 4가지 요소)
- RESTful API에 의해 주소의 개수가 줄어들어 CRUD를하나의 주소로 관리함
- 그리고 요청을 보낼 때마다 어떤 요청을 보냈는지 파악할 수 있는 메소드(스티커)를 붙여 함께 전송
- Create / POST : 생성하는
- Read / GET : 불러오는
- Update / PUT(전체), PATCH(일부) : 바꾸는
- Delete / DELETE : 지우는
GitBook (깃 북)
- 깔끔한 API 문서 작성을 도와주는 서비스
HDD (하드 디스크) / SSD (보조 기억 장치)
- 컴퓨터의 창고 역할
IDE (Intergrated Development Environment)
- 코드가 아닌 그림으로 작업할 수 있게 해주는 등 개발자들의 작업을 도와주는 기능이 포함되어 있는 통합 개발 환경
- 종류 : Android Studio(안드로이드 앱 개발) , Xcode(애플 앱 개발), Eclipse(C/C++/JAVA/Web 개발), PyCharm(Python 개발) 등
IP 주소
- 인터넷에 접속하는 순간 컴퓨터는 현재 위치, 컴퓨터에 따라 고유한 숫자를 가지게 된다.
- IP 주소는 12자리 숫자가 마침표로 구분된 모습을 갖는다. (ex_ 214.123.142.12)
- 0 ~ 255 의 숫자만 사용할 수 있다.
- 숫자의 한계 때문에 최근에는 숫자 구분을 4개에서 6개로 늘린 IPv6를 함께 사용하고 있다.
JSON
- 클라이언트와 서버는 요청과 응답을 주고 받고, 그 때 필요한 데이터들을 JSON 형식으로 주고 받는다.
- 형식
{
키1(Key): 값1(Value),
키2(Key): 값2(Value),
키3(Key): [값3, 값4, 값5]
}
// 예시
{
"id": "osy"
"pw": "1220"
"hobby": ["game", "cat", "travel"]
}
LAN (Local Area Network)
- 컴퓨터가 연결된 작은 지역
- 학교 컴퓨터실 하나, 아파트 하나, 커피숍 하나하나가 모두 LAN이다.
- LAN을 연결하는 선을 LAN선이라고 부른다.
- MAN(Metropolitan Area Network) : 도시의 여러 LAN을 하나로 연결한 것
- WAN(Wide Area Network) : 도시와 도시, 나라와 나라를 모두 연결한 것
Method(함수)
- 수학에서 x라는 입력값에 따라 y라는 결과가 나오듯, 요청을 보내면 결과값이 출력되는 것을 통틀어 메소드 라고 한다.
Parameter (파라미터)
- 메소드를 보낼 때 요청 변수
SDK (Software Development Kit)
- API를 제공해주는 소프트웨어를 개발하기 위한 도구, 즉 'A 소프트웨어'를 개발할 때 도움을 주는 'B 소프트웨어' 라고 할 수 있다.
개발자
- 운영체제 위에 돌아가는 소프트웨어를 개발함, 컴퓨터에게 일을 시키는 사람
레드 햇(Red hat)
- 리눅스의 유명한 버전 중 하나로 '유료' 이다.
리눅스 (Linux)
- 서버 프로그램을 돌리는 '무료' 운영체제
- 하드웨어를 관리해서 사용자가 프로그램을 사용하기 쉽게 도와준다.
- 리눅스는 여러가지 개량 버전이 존재한다. (우분투, 레드 햇, 안드로이드 등)
메모리
- CPU의 개인 작업 공간, 보조 기억 장치에서 옮겨진 데이터 뭉치를 보관한다.
- 메모리에 저장된 데이터들은 전원이 꺼지면 없어진다.
서버
- 클라이언트의 파일 요청에 응답하여 파일을 주는 컴퓨터
- 서버 컴퓨터를 다른 말로 '백 엔드' 라고 표현한다.
- 24시간, 365일 안정적으로 돌아가는 것이 가장 중요하다.
- 호스팅 업체 : 서버를 24시간 가동해주는 서비스를 제공하는 업체
우분투
- 리눅스의 유명한 버전 중 하나이다.
운영체제 (Operating System)
- 프로그램을 실행하는 과정을 처리하고, 하드웨어를 관리해준다.
- 종류 : Window, Mac OS, iOS, Android 등
에버노트
- 오프라인 상태(네트워크 없는 상태)로도 만들 수 있는 노트
- 온라인 상태가 되면 '동기화'가 이루어진다.
코딩
- 프로그래밍 언어로 문서 작업을 하는 행동
클라이언트
- 서버에게 파일을 요청하는 컴퓨터
- 클라이언트 컴퓨터를 다른 말로 '프론트 엔드' 라고 표현한다.
'Devops Bootcamp' 카테고리의 다른 글
[10. March] 리눅스 #2 / TIL (0) | 2023.03.10 |
---|---|
[09. March] 리눅스 #1 / TIL (0) | 2023.03.09 |
[08. March] 규모에 따른 운영 / TIL (0) | 2023.03.08 |
[07. March] 개발 프로세스 / TIL (0) | 2023.03.07 |
[Book] 비전공자를 위한 이해할 수 있는 IT지식 #2 (0) | 2023.03.04 |