퍼블리_비전공자를 위한 IT 지식

라용·2022년 7월 26일
0

퍼블리 콘텐츠 '개발자랑은 왜 말이 안 통할까? 비전공자를 위한 이해할 수 있는 IT지식' 의 일부 내용을 정리했습니다.

1. 개발자가 하는 일

개발자는 컴파일러에게 문서로 일을 시키는 사람입니다. 자바, 파이썬, 루비, 스위프트 등 영어로 되어 있는 프로그래밍 언어를 사용해 문서를만들고 컴파일러에게 명령을 전달하면, 컴파일러가 그 명령을 기계어인 0과 1로 변환해 컴퓨터에게 전달합니다.

개발자들은 IDE(Integrated Development Environment) 라는 프로그램을 사용합니다. (문장 자동 완성, 코드가 아니라 그림으로 작업하기 등) 안드로이드 앱을 만들기 위해서는 안드로이드 스튜디오(Android Studio)를 사용하고 애플은 엑스코드(Xcode)를 사용합니다. 이렇게 IDE 는 대부분 어떤 분야에 특화되어 있습니다.

2. 컴퓨터의 기본 운영체제

CPU는 따로 데이터를 저장하지 않기 때문에 데이터를 연산하거나 처리하려면 저장된 데이터를 CPU로 보내야 합니다. 이때 CPU의 창고 역할을 하는 보조기억장치인 HDD, SSD에게 처리할 데이터를 달라고 신호를 보냅니다.

하지만 보조기억장치는 CPU 보다 속도가 느려서, 둘이 같이 일을 한다면 속도가 하향 평준화 됩니다. 그래서 사람들은 '메모리'라는 CPU의 개인 작업 공간을 만들었습니다. 작업에 필요한 큰 데이터 뭉치를 보조기억장치에서 메모리로 한 번 옮겨 놓으면 그때그때 데이터를 요청하지 않아도 됩니다.

우리는 매일 스마트폰, PC를 통해 CPU, 메모리, 보조기억장치를 사용하지만 이런 과정을 몰라도 됩니다. 운영 체제라는 소프트웨어가 이런 동작을 수행해주기 때문입니다. 대표적인 운영 체재로 윈도, 맥OS, IOS, 안드로이드가 있습니다. 각 운영체제 위에서 돌아가는 프로그램을 만들려면 특정 언어를 써야 합니다.

3. 클라이언트는 뭐고 서버는 뭘까?

파일을 달라고 계속 요청하는 컴퓨터를 '클라이언트'라고 합니다. 그리고 그 파일을 주는 컴퓨터를 '서버'라고 합니다. 우리가 직접 보고 만지는 스마트폰, PC를 클라이언트 컴퓨터라고 할 수 있습니다. 클라이언트 컴퓨터는 다른 말로 '프론트 엔드'라고도 합니다. 반면 고객에게 보이지 않는 곳, 뒷 단에 있는 것을 서버, 다른 말로 '백 엔드'라고 합니다.

4. 클라이언트와 서버가 요청을 주고 받는 암호

서버는 요청에 따라 응답을 줍니다. 다만 컴퓨터는 한글을 모르기 때문에 어떤 요청인지 구분할 수 있는 '체계'가 필요합니다. 그 체계가 바로 API 입니다. API 는 클라이언트, 서버와 같은 서로 다른 프로그램에서 요청과 응답을 주고 받을 수 있게 만든 체계입니다.

응답을 주는 쪽에서 요청 종류에 따라 받는 위치와 어떤 응답을 보내는지를 미리 정해놔야 합니다. 이러한 기능은 서버 개발자가 만들고 그 결과물이 서버 프로그램입니다. 클라이언트 프로그램은 정해진 주소에 요청을 보내면 됩니다. API는 서버 개발자가 개발하고, 클라이언트 개발자는 그 API를 사용합니다. API로 요청과 응답을 주고 받을 때는 데이터도 같이 담기므로 해당 기능을 개발해야 합니다. 로그인 요청시 아이디와 비밀번호 데이터를 받아 오는 것과 같습니다.
(예를 들어 협업 중인 프로젝트에서 회원 정보에 생일을 추가한다면, 회원 가입 API와 회원 정보 조회 및 수정 API에 대한 변경이 필요합니다.)

요청은 크게 4가지로 구분하는데 이 요소들을 묶어 CRUD라고 합니다. (Create, Read, Update, Delete) CRUD 관점에서 데이터를 보아야 합니다. 데이터를 볼 수는 있는데 만드는 기획이 없을 수 있고, 보거나 만들 수 있는데 수정이나 삭제하는 기획이 없을 수 있습니다.

CRUD 별 주소를 만들면, 주소가 너무 많아져 관리가 힘듭니다. 그래서 좀 더 체계적인 API 인 RESTful API를 사용합니다. (REST, Representational State Transfer) 이렇게 하면 하나의 주소로 관리하며 스티커를 붙여서 함께 전송합니다.

스티커는 메소드를 말합니다. 아래 5개는 자주 쓰이니 알아둡니다.
Create(생성해줘): POST
Read(불러와 줘): GET
Update(바꿔줘): PUT(전체를) / PATCH(일부를)
Delete(지워줘): DELETE

RESTful API 는 상황마다 다양한 방식으로 변형해서 사용합니다.

응답해야 하는 서버개발자들은 '잘 됐어'와 '잘 안 됐어'의 체계를 만듭니다. '잘 됐어'는 200번대 코드로, 클라이언트 요청에 문제가 있는 경우는 400번대 코드로, 서버에 문제가 있다면 500번대 코드로 표현하기로 정했습니다.

5. 요청과 응답을 주고받는 형식, JSON

데이터을 요청하고 응답할 때 주고받는 데이터 형식이 다르면 모두 대응해야 하므로 비효율적입니다. 그래서 JSON이라는 가장 유명한 형식으로 통일하기도 합니다. JSON은 중괄호로 시작하고 key 와 value 로 이루어져 있습니다. key 와 value 는 콜론(:)으로 구분합니다.

6. 앱의 이해 - 설치해서 사용하는 모든 프로그램

앱은 설치해서 사용하는 모든 프로그램을 말합니다. 우리가 사용하던 윈도우에서는 이를 '응용 프로그램(Application Software)'라고 불렀습니다. 스마트폰이 등장하면서 데스크톱에 설치하는 프로그램은 '응용 프로그램' 스마트폰에 설치하는 프로그램은 '앱' 혹은 '어플', '애플리케이션'이라고 부르게 되었습니다.

모바일에는 '앱 마켓'이 있습니다. IOS는 앱스토어가 있고 안드로이드는 '구글 플레이 스토어'가 있습니다. 애플은 직원이 직접 앱을 살펴보고 버그가 있으면 거절(리젝)합니다. 대신 리젝 사유를 명확히 제시하고, 해당 문제를 고치면 통과시켜 줍니다. 그 기간이 오래 걸릴수도 있으니 앱스토어의 경우 계획을 보수적으로 세워야 합니다. 안드로이드는 상대적으로 심사 과정이 거의 없습니다. 업로드하면 빠른 시간 안에 마켓에 반영됩니다. 대신 구글의 지침에 맞지 않는 앱이라면 예고 없이 마켓에서 내려버리니 주의해야 합니다.

7. 앱과 웹

웹은 수정이 쉽습니다. 원본만 수정하면 별도의 업데이트 필요없이 사용자는 새로운 화면을 볼 수 있습니다. 새로고침을 하면 바로 적용됩니다. 그런데 이 부분이 단점이기도 합니다. 웹은 매번 html, css, javascript를 다운로드 받아야 합니다. 네트워크 환경에 영향을 받습니다. 앱은 웹보다 효율적으로 네트워크의 영향을 조금만 받도록 만들 수 있습니다.

원래 정해놓은 언어로 개발한 앱은 운영체제 자체의 기능을 사용하기 때문에 '네이티브 앱'이라고 합니다. IOS는 스위프트, Objective-C 가 있고 안드로이드는 자바, 코틀린이 있습니다. 이제는 앱의 특정 부분에 '브라우저'를 올리는 방식인 '하이브리드 앱'도 가능합니다.

8. 데이터 관리

개발 이슈에 따라 클라이언트의 데이터베이스도 많이 활용합니다. 예를 들어 인터넷이 연결되지 않은 상태에서 동작하는 알람 앱의 데이터는 클라이언트 데이터베이스를 사용합니다.

어떤 데이터베이스를 사용하는지 정확히 알고 싶다면 API 문서를 확인하면 됩니다. 정확한 사람에게 정확한 요청을 하기 위해서는 데이터가 어디에 있는지 구분하고 알아두어야 합니다.

profile
Today I Learned

0개의 댓글