먹었으면 뇌를 쓰자
비전공자입니다. 내가 익히려고 정리한 IT 개발자 용어.zip 본문
1. 컴퓨터
- 컴파일은 무엇인가
컴파일(compile)은 번역(translate)이다. 컴파일은 우리의 말을 컴퓨터 말로 번역하는 것이다.
- 컴퓨터는 무엇인가
메인보드 {
CPU (중앙처리장치) : 댁알이, 데이터 저장 X
RAM (메모리) : CPU 개인 비서
HDD/SSD (보조기억장치) : 창고, 데이터 저장 O }
CPU : "데이터 내놔."
보조기억장치 : "데이터 너무 많아서 찾는 데 오래 걸려."
RAM : "회장님. 저 데이터. 잡을까요"
보조기억장치 -> RAM -> CPU
Photoshop 파일 -> (roading) -> Photoshop 실행
2. 운영체제
- 운영체제는 무엇인가
보조기억장치 -> RAM -> CPU
Photoshop 파일 -> (roading) -> Photoshop 실행
* 이 과정을 담당하는 책임자
많이 사용하는 운영체제는 리눅스이다. 다른 운영체제에는 윈도우, 맥OS 등이 있다.
리눅스 버전 중 유명한 것이 '우분투', '레드햇'(유료 버전), '안드로이드'(구글의 개량 버전)이다.
운영체제 위에서는 파워포인트, 포토샵이 돌아가듯 서버 프로그램이 돌아간다.
직접 서버를 24시간 돌리면 전기세 폭탄에 고장 위험이 있다.
그래서 서버를 대신 돌려주는 호스팅 업체가 있다. (국내 - 카페24,가비아 / 국외 - AWS 등)
3. API와 JSON
- 클라와 서버 사이 API
클라 “서버야 이거 줘”
클라 “서버야 저거 줘”
클라 “서버야 다 줘”
서버 "이거랑 저거랑 다가 뭔데?"
클라와 서버처럼 서로 다른 프로그램에서 요청과 응답을 주고 받을 수 있게 만든 체계를 API라고 한다.
클라 "서버주소/로그인 기능 요청" -> Data 전송(id,pw) -> 서버 "로그인 기능 응답"
클라 "서버주소/회원가입 기능 요청" -> Data 전송(name,phone) -> 서버 "회원가입 기능 응답"
.
.
(대충 엄청 많이 세세하게 요청함. 서버는 댁알이 터짐)
개별 요청이 1억 개가 나오면 너무 복잡해져서 문제가 발생할 수 있다.
그래서 요청의 유형에 따라 CRUD의 네 가지로 구분하고 메소드를 지정했다.
Create-POST / Read - GET / Update - PUT(전체), PATCH(일부) / Delete - DELETE
그리고 서버 입장에서 API 응답할 때 성공과 실패가 나오면, 그 이유를 코드로 해명한다.
200번대-성공함 / 400번대-클라 문제로 실패함 / 500번대-서버 문제로 실패함
- 소프트웨어와 소프트웨어 사이 API
소프트웨어1 “영한 번역 기능 쓰고 싶다” API 요청
소프트웨어2 “나한테 있는 기능? 갖다 써라” API 응답
여기서 API를 제공하는 소프트웨어를 SDK(Software Development Kit)라고 한다.
예를 들어 구글에서 ‘구글 지도’ 소프트웨어를 만들었다고 하자. 이 때 다른 회사들도 구글에서 제공하는 ‘구글 지도 SDK'를 설치하면 자신의 소프트웨어에 ‘구글 지도’ 기능을 탑재할 수 있다. ‘구글 지도 SDK’에서 제공해주는 API들을 통해 구글 지도에 여러 요청을 보내고, 응답을 받을 수 있는 것이다.
참고로, Open API라고 해서 아무나 그대로 갖다쓸 수 있는 API도 있다. 네이버는 네이버 서버에서 쓰는 다양한 기능을 사람들에게 공개한다. 예를 들어 맛집 검색 어플에 네이버 블로그 Open API를 사용하면 맛집의 블로그 후기를 볼 수 있다.
- JSON은 무엇인가
요청과 응답을 할 때는 관련해서 필요한 데이터를 담아야 할 경우가 생긴다. API에 데이터를 담을 수 있는 기능을 개발해야 하고, 담아내는 형식을 정해야 한다. 그렇다면 형식을 통일시키자. 과거에는 XML, 현재는 JSON 형식을 쓴다.
JSON
{
"category" = "drink",
"sort" = "desc",
"items" = ["cafe mocha", "cafe latte", "cafe americano"]
}
- 정리
한 줄 요약 : 클라와 서버, 소프트웨어와 소프트웨어는 API로 요청과 응답을 주고 받으며 그때 필요한 데이터를 JSON 형식으로 주고받는다.
<SDK 휴게실>
[API 메모판]
A부서가 붙여놓은 포스트잇1 “Read 기능 쓰고 싶은데요. 데이터는 요기 JSON 참고”
A부서가 붙여놓은 포스트잇2 “Create 기능도요. 요기 JSON”
B부서는 열심히 포스트잇을 본다... 답장 포스트잇을 붙인다...
4. 애플리케이션과 웹
- 애플리케이션과 웹은 무슨 차이가 있나
APP (사용자 측에서 주기적 업데이트 필요, 네트워크 환경 영향 덜 받음)
코드 수정 -> 모바일: 마켓 업로드 / 데스크톱: 서버 업로드 -> 사용자 업데이트 -> 변경 완료
WEB (항상 새로 고침 가능, 빠른 네트워크 환경 필요)
코드 수정 -> 원본 파일을 수정 파일로 교체 -> 변경 완료
- 웹 브라우저와 반응협 웹은 무엇인가
브라우저 : HTML, CSS, JS를 읽는다. HTML에 적힌 대로 정보를 보여주고, CSS에 적힌 대로 디자인을 입히고, JS에 적힌 대로 동작한다.
반응형 웹 : 브라우저의 가로 넓이에 반응하여 구성 요소가 변하는 기술이다.
- 네이티브 앱과 하이브리드 앱은 무엇인가
구글 : 크롬 브라우저 - 안드로이드 운영체제 (JAVA, 코틀린 언어로 개발)
애플 : 사파리 브라우저 - 맥OS/iOS 운영체제 (스위프트,Objective-C 언어로 개발)
마이크로소프트 : 익스플로러 브라우저 - 윈도우 운영체제
네이티브 앱 : 안드로이드, iOS 운영체제를 개발하기 위해 쓰던 언어로 만든 애플리케이션이다. 기본 내장형 앱(카메라, 계산기, 메모장)이 속한다. 운영체제별로 따로 만들어진 카카오톡, 인스타그램, 유튜브도 네이티브 앱이다.
장점 : 네트워크를 최소한으로 이용하도록 만들면 네트워크 영향을 많이 받지 않는다.
단점 : 운영체제별로 언어를 달리 하여 버전을 따로 만들고, 수정도 따로 해야 한다.
"잠깐, 이제 운영체제에 브라우저를 내장시켜서 세트로 쓰게 하자"
하이브리드 앱 : 애플리케이션의 특정 부분에 브라우저를 올린다. 그리고 HTML 파일을 불러올 URL을 설정한다. 그러면 브라우저가 뜨고, 브라우저는 HTML과 이에 연결된 파일을 불러와서 보여준다. 네이티브와 브라우저가 혼합된 것이다. 네이버, 다음 등 검색 엔진이 하이브리드 앱이다.
장점 : 운영체제 상관 없이 서버의 HTML만 수정하면 새로고침할 때 반영된다.
단점 : 웹을 사용하므로 네트워크 영향을 받게 된다.
5. 데이터베이스
RDBMS(Relational DataBase Management System)
: 서로 관련된 테이블끼리 참조해서 데이터 관리하는 시스템이다. MySQL, Oracle, MaridDB 등이 있다.
데이터베이스를 통한 이미지 처리
: 이미지는 이미지 주소를 통해 어떤 컴퓨터에서도 접근 가능하다. 그런데 프로필 이미지처럼 유저명과 ‘관계’를 가진 이미지는 따로 관리해야 한다. 그러므로 데이터베이스에서 프로필 이미지 주소를 별도의 테이블로 관리한다.
6. 프레임워크와 라이브러리
거대 IT 회사(애플, 구글)는 개발자들이 애플리케이션을 쉽고 빠르게 개발할 수 있도록 프레임워크(COCOA, 안드로이드 프레임워크)를 만들어 제공한다.
앱 만들어? 버튼 만드는 코드, 메뉴 만드는 코드 다 가져가...
웹 만들어? 그러면 Angular.js(구글), React.js(페북), Vue.js 가져가...
서버 만들어? 그러면 Spring(JAVA언어), Django(Python언어), Rails(Ruby언어) 가져가...
프레임워크(규칙이 정해진 큰 그림) 안에 라이브러리(필요할 때 갖다 쓰는 작은 도구)가 포함된다. 둘 다 다른 사람이 만들어놓은 코드를 이용하는 것이다. 1개의 프로젝트는 1개의 프레임워크, N개의 라이브러리를 쓸 수 있다.
7. 협업과 소스 관리
깃! 소스 코드 버전을 관리할 수 있다. 버전을 달리 할 때마다 커밋(commit)을 하고 깃발을 꽂는다.
깃허브! 소스 코드의 원격 저장소이다. 내 컴퓨터에서 작업하고 깃허브에 코드를 커밋할 수 있고, 깃허브에서 누가 커밋한 코드를 가져와 내 컴퓨터에서 작업할 수 있다.
브랜치! 하나의 프로젝트를 진행할 때 특정 시점에서 분기점을 달리 하여, 동시에 여러 기능을 충돌 없이 작업하는 것이다.
머지! 각각의 브랜치에서 작업한 코드를 합치는 것이다.
<커밋 로그>
1.0.0 (타임라인 댓글 쓰기 기능)
1.1.0 (타임라인 댓글 수정 기능) commit △
브랜치1-> 1.2.0 (내용 분석 기능) commit △
브랜치2-> 2.0.0 (이미지 라이브러리 변경) commit △
* 이 게시물은 책 <비전공자를 위한 이해할 수 있는 IT 지식>(최원영)의 내용을 개인 공부 목적으로 정리한 것입니다.
비전공자를 위한 이해할 수 있는 IT 지식 | 최원영 - 교보문고
비전공자를 위한 이해할 수 있는 IT 지식 | IT 시대의 필수 교양서우리는 매일 스마트폰으로 메시지를 보내고, 컴퓨터로 일을 합니다. 또 음식점에서 키오스크로 주문하고, 가상현실에서 게임을
product.kyobobook.co.kr