본문 바로가기
데이터 사이언스

비개발자의 언어로 풀어 쓴 API 의 구조와 기능

by 빛나는존재 2022. 4. 18.
반응형

비개발자가 개발자의 언어를 이해해야 하는 이유

나는 entry level의 데이터 분석가로, 아직 프로그래밍과 IT에 대한 지식이 해박하지 못한 편이다. 이런 상태에서 IT 조직에서 개발자들에게 프로그램 개발 혹은 데이터베이스에 대해 요구사항을 이야기하면 그들은 내가 모르는 IT 용어를 사용하여 서로 커뮤니케이션에 어려움을 겪었다. 예를 들어, 개발자들이 ‘트리거를 발생시킨다’, ‘프런트엔드’, ‘백엔드’, ‘CSS’, ‘API’의 용어를 사용하여 나에게 무언가 설명할 때 이런 용어들은 어디선가 들어봤지만 내가 따로 공부를 하지 않고서는 정확하게 알 수 없는 용어들이었다. 그래서 이런 지식을 쌓기 위해 어떻게 공부를 해야 할지 나름대로 생각해봤으나 IT의 세계는 생각보다 너무나 넓고 방대했다. 그러던 중, 직장 동료로부터 “비전공자를 위한 이해할 수 있는 IT 지식” 이란 책을 소개받았다. 서문을 읽어보니 그가 겪었던 상황이 나와 비슷해서 더 공감이 갔다. 그 역시 비개발자였지만 개발자에게 어떤 업무를 요청하면서 커뮤니케이션에 난관을 겪으면서 IT 지식을 쌓기 위해 여러 가지 시행착오를 겪으면서 결국 자바를 배우고 자신만의 app을 만들 정도로 실력을 향상하고 어려운 IT용어를 비전공자의 입장에서 쉽게 이해할 수 있도록 체계적으로 설명해 주고 있다. 이 책은 현재 IT 도서 중 베스트셀러로 등극하고 그의 강의는 회사에서 제공하는 동영 사우 교육으로도 수강할 수 있을 정도로 유명하다. 특히 API에 대해 궁금해했었는데 이 부분에 대해 이해하기 쉽게 자세하게 나와있어 많은 도움이 되었다. 이 글에서는 그 부분을 내가 이해한 대로 요약하고자 한다.

 

API는 서버와 클라이언트의 상호작용을 위한 장치

클라이언트는 언어적인 의미로 보면 손님이라는 뜻이다. 손님은 누군가에게 자신이 원하는 것을 요구하는 존재이다. IT의 세계에서 클라이언트는 진짜 사람이 아닌 여러 형태의 컴퓨터(핸드폰, tablet pc, PC 등)이며 여기에서 데이터나 동작을 요청하면 서버는 정보를 주거나 특정 동작을 한다. 예를 들어 클라이언트가 날씨를 알려달라고 하면 서버는 날씨에 대한 데이터를 전송하고 클라이언트가 어떤 웹사이트에 회원가입을 하게 해 달라고 하면 그에 맞는 페이지를 불러온다. 클라이언트의 요청사항은 크게 4개의 주요한 카테고리로 나눌 수 있다. Create(생성), Read(읽기), Update(수정), Delete(삭제) 이며 이를 줄여서 CRUD라고 한다. 그런데 단순히 API를 사용하면 CRUD 요청마다의 주소가 여러 개 생기기 때문에 관리에 어려움이 있을 수 있다. 따라서 이를 체계적으로 관리를 하기 위해 “RESTful API”라는 서비스가 생기게 되었다. 여기서는 CRUD요청을 처리하는데 1개의 주소를 사용하기 때문에 C, R, U, D 별로 주소를 따로 생성하는 API보다 훨씬 더 간편하게 관리를 할 수 있다. 서버에서는 요청이 잘 처리되면 특정 코드를 리턴하여 요청사항 수행에 실패했는지, 성공했는지 여부를 알려준다.

 

API에서 다뤄지는 데이터의 구조

여기서 눈여겨봐야 할 점은 CRUD에 대한 대상이 모두 데이터라는 것이다. 데이터를 생성, 읽기, 수정, 삭제하는 작업을 요청하고 수행하기 위한 것이 API인데, 데이터는 HTML+CSS+Javascript 일수도 있고 JSON 형태 일 수도 있다. HTML 이란 웹사이트를 작성하기 위한 기본적인 문법이고 CSS는 그 문법에 시각적으로 적절한 이미지를 연동하는 것, Javascript 는 어떠한 동작을 위한 기능이라고 생각하면 되겠다. JSON은 key와 value 값으로 되어있어 파이썬의 자료 형태 중 하나인 dictionary와 유사한 구조이다. key와 value는 1:1, 혹은 1: many의 관계 일 수 있다. 1:1의 관계는 예를 들어 A라는 사람이 체육관에 가서 운동을 하는데 개인 락커를 쓰는 것이다. 락커 안에는 A라는 사람의 짐 1개만 들어간다. 1:many의 관계는 하나의 key에 여러 개의 value가 해당될 때 그것들을 대괄호로 묶어서 큰 개념에서는 1개의 key에 대괄호로 묶인 value들 세트가 1:1 대응이 되게 하는 것이다. 예를 들어, A라는 사람이 개인락커에 짐을 풀어도 그 짐 안에는 운동화, 셔츠, 샴푸, 비누가 있을 수 있다. 그러면 key는 A, value는 그 짐 안에 있는 4가지 물건이 되는 것이다.

반응형