개발과 뗄 수 없는 환경에 있는 프로덕트 디자인팀...
업무 시 가끔 모르는 용어를 접하게 되는 상황도 이따금 발생하지 않나요?
원활한 커뮤니케이션을 위해선 IT 지식이 꼭 필요합니다.
책을 읽고 필요하고 아주 기본적인 부분만 정리해보았어요.
사람과 컴퓨터 사이에는 '컴파일러'가 있어서요. 그리고 컴파일러는 사람의 요구를 컴퓨터에 전달해 줘요.
개발자는 컴파일러에 문서로 일을 시키는 사람을 말합니다.
개발은 크게 2가지로 나눠볼 수 있어요. 요청하는 클라이언트(=프론트)와
요청에 응답하는 서버(=백엔드)! 자세한 내용은 곧장 아래에서!
클라이언트는 서버에게 요청을 보내고 응답을 받아요.
이때 요청을 구분하는데에도 '체계'가 필요한데요, 그 체계가 API입니다!
API는 클라이언트, 서버와 같은 서로 다른 프로그램에서 요청과 응답을 주고받을 수 있게 만든 체계를 말해요.
클라이언트가 서버로 보내는 '요청'과 서버가 클라이언트로 보내는 '응답'에는
데이터가 담길 수 있기에 데이터를 넣을 수 있는 '기능'을 같이 개발해야 해요.
데이터를 넣을 수 있는 '기능'엔 여러 가지 '형식'이 있는데요, 가장 유명한 형식이 JSON입니다.
이때 컴퓨터는 응답을 보내요.
'잘 됐어~ or 잘 안됐어!' 잘 되었을 때는 200번대 코드가,
클라이언트의 요청 때문에 잘 안되었을 땐 400번대, 서버 내부적으로 잘 안되었을 땐 500번대 코드가 떠요.
'OPEN API'도 많이 들어보셨을 텐데요,
네이버 서버가 제공하는 다양한 기능을 일반 사람들이 쓸 수 있게 오픈 한 것들을 말해요!
그럼으로써, 한 번이라도 더 네이버 블로그에 들어가 보게 되어요.
영향력은 힘이자 돈...많은 사람이 포털에 방문하면 힘과 돈이 되어요.
더불어 API 사용의 경우 특정 횟수 이상은 돈을 받기도 한답니다. 그래서 비즈니스 모델이 될 수 있어요.
이처럼 다양한 이유로 회사는 서버의 API를 오픈하기도 해요.
아이폰 개발자가 어플을 만들게 되면요, 1.0.0와 같이 자신이 개발한 프로그램에 번호를 부여하게 되어요.
이 번호를 버전이라고 부른답니다. 숫자의 자리마다 의미하는 바가 달라요.
오른쪽 끝자리 : 작은 변화
중간 숫자 : 하위 버전과 호환이 가능하지만 큰 변화
왼쪽 끝자리 : 하위 버전과 호환이 가능하지 않은 큰 변화
아이폰 애플리케이션을 1.0.0에서 2.0.0으로 변경하기 위해서는 업데이트가 필요해요.
모바일이면 심사도 필요고요! 그렇게 업데이트된 결과를 사용자들이 다운로드해야 합니다.
하지만 웹은 달라요. 그냥 서버의 원본을 바꾸면 된답니다.
그리곤 '새로고침'하면 자동으로 반영되어요. 심사 과정도 없고 사용자의 업데이트 과정도 없죠!
이처럼 웹은 수정이 쉽고, 원본만 수정하면 사용자가 업데이트하지 않아도 새로 고치면 반영이 되어요.
단점이라고 하면 네트워크 영향을 크게 받는다는 거예요.
반대로 애플리케이션은 웹보다 효율적으로 네트워크 영향을 조금 받도록 만들 수 있답니다.
클라이언트와 서버 컴퓨터 위에는 모두 데이터베이스 관리 시스템을 돌릴 수 있고, 데이터를 저장할 수 있어요.
서버에만 데이터를 저장할 수 있는 줄 알았는데!
개발 이슈에 따라서 클라이언트의 데이터베이스도 많이 활용한답니다.
알람 앱은 인터넷이 연결되어 있지 않은 상태에서도 동작해요.
이 같은 경우는 클라이언트에 저장되었다고 볼 수 있어요.
클라이언트에 이미지를 놓을 시 장점은 이미지를 내려받지 않아도 되는 거예요.
그냥 클라이언트 프로그램이 이미지 주소를 통해 이미지를 가져와 네트워크보다 훨씬 빠르답니다.
단점이라고 하면 클라이언트의 이미지를 바꾸기 위해서는 앱 업데이트를 해야 해요.
최대한 네트워크에 부담이 가지 않도록 많은 이미지를 클라이언트에 놓아야 하지만,
이미지가 바뀌었을 때 서비스에 영향을 준다면 서버에 놓아야 해요.
즉 클라이언트에 놓느냐, 서버에 놓느냐를 결정하기 위해서 이미지 성격을 봐야 한답니다.
인스타그램을 예로 들어 볼까요? 수많은 사용자가 매일 수많은 이미지를 업로드해요.
즉 '누가', '어떤 이미지'를 만들었는지 '관계'가 생기게 됩니다.
관계가 맺어진 데이터는 클라이언트에서 관리하기 힘들어요. 그래서 서버에 저장한답니다.