brunch

You can make anything
by writing

C.S.Lewis

by 진진 Jun 14. 2022

서버? API? 그게 뭔데

얼레벌레 기획자의 개발 용어 공부



 본글은 개발 용어의 사전적인 정의를 '이해를 돕는 것'에 그 의의를 두고 있다.


 서비스 기획자/PM에게 가장 중요한 건 해당 개념을 알고 있되, 개발자에게 아는 척하지 않는 게 제일 중요하다. 어쭙잖게 듣고 와서 이렇게 하면 어떨지, 저렇게 하면 어떨지 던져 놓는 것은 주니어로서는 피해야 할 실수다.


그들의 R&R(Role and Responsibility/역할과 책임)을 존중하는 것이 기획자의 첫걸음이고, 그 R&R을 존중하기 위해 공부하는 것이기 때문이다. (개발자뿐만 아니라 협업하는 모든 직군에게!)


 개발 용어는 생소하다. 많은 것들을 포괄하려다 보니 추상화되고 추상화되다 보니 이해하기 어렵다. 사전적 의미를 나열해보면 이해가 빠를 것이다. 교수님들은 추상화된 개념이 가장 정확한 개념이라고 하신다. (...)


도움 버튼 애달프게 누르는 우리의 모습


1. 서버, API, Client


사전적 정의

서버 : 클라이언트에게 네트워크를 통해 정보서비스를 제공하는 컴퓨터 시스템으로 컴퓨터 프로그램(server program) 또는 장치(device)를 의미한다. (출처 : Wikipedia)


API : 운영체제와 응용프로그램 사이의 통신에 사용되는 언어(??)나 메시지 형식(??)을 말한다. 운영체제나 C, C++, Pascal 등과 같은 언어로 응용 프로그램을 만들 때, 윈도우를 만들고 파일을 여는 것과 같은 처리를 할 수 있도록 1,000여 개 이상의 함수로 구성되어 있다. (출처 : 네이버 사전)


Client : 클라이언트/서버(client/server) 구성에서 사용자 측. 사용자가 서버에 접속했을 때 클라이언트는 사용자 자신을 지칭할 수도 있고, 사용자의 컴퓨터를 가리키기도 하며, 컴퓨터에서 동작하고 있는 프로그램이 될 수도 있다.  (출처 : 네이버 사전)




요약 : 서버는 서비스 제공자다. API는 언어나 메시지 형식이다. 클라이언트는 사용자다.


쉽게 이해하기 : 우리(사용자)는 닭갈비집(서비스) 에와서 메뉴판(API)을 보고 닭갈비집 알바생(서버)에게 주문을 한다.


닭갈비집 : 서비스

메뉴판 : API

닭갈비집 알바생 : 서버

손님 : 유저


물론 이곳에서 좀 더 디테일을 뽑자면, API는 유저가 트리거링해야 작동한다는 부분이 있는데, 이 부분은 기획자 실무에 들어가게 되면 알 수 있는 내용이니 생략하도록 하자.


외우고 싶다면! 기억하자, 서버는 닭갈비집 알바생!


2. 라이브러리, Framework


사전적 정의

라이브러리 : 라이브러리(영어: library)는 주로 소프트웨어를 개발할 때 컴퓨터 프로그램이 사용하는 비휘발성 자원의 모임이다. (출처 : Wikipedia) ...? 비휘발성 자원..?


프레임워크 : 컴퓨터 프로그래밍에서 프레임워크는 구조적으로 고정된 부분을 재사용할 수 있도록 하고, 응용별 특정 기능을 추가적인 사용자 작성 코드에 의해 선택적으로 구현 가능하도록 하는 포괄적인 추상 구조(??), 그리고 이를 지원하는 소프트웨어 플랫폼을 말한다.  (출처 : 프레임워크 [Framework] (두산백과 두피디아, 두산백과)





요약 : 라이브러리는 컴퓨터 프로그램이 가지고 있는 고유한 기능(코드로 짜인)이다. 프레임 워크는 구조적으로 고정된 부분 (대체로 개발 볼륨이 큰 기능들을 특정 규칙과 컨셉, 구조를 미리 정해서 구현한 것)을 재사용하고 선택적(그 구조안에서만)으로 구현할 수 있다.


비유 : 라이브러리는 도서관이다. 컴퓨터 프로그램의 다양한 기능들이 모여있는 도서관이다. 프레임워크는 거의 완성된 조립식 건물과도 같다.


라이브러리 : 프로그래밍 언어의 다양한 기능들이 모여있는 도서관

프레임워크 : 특정 프로그래밍 언어가 지원하는 거의 완성된 조립식 건물 (우리가 건물을 짓는 다면 건물의 뼈대가 될 수도 있고, 타일공사를 한다면 타일 바닥이 될 수도 있다.)


위 같은 특성상 라이브러리는 자유롭게 교체하거나 넣고 빼는 게 가능하다. 하지만, 프레임워크는 프로그램이 제공하는 일정한 틀에 제한적으로 커스터마이징 하는 형식이기 때문에 서비스를 변형해야 해서 새로운 기능이 프레임워크 위에서 구현하기 어렵다면 기존 프레임워크 위에서는 만들 수 없는 기능이 돼버린다.


(예컨대, 내가 PM이고 우리 회사는 특정 프레임워크로 서비스를 하고 있다. 비즈니스적으로 이런 기능을 추가하거나 개선하면 좋을 텐데, 프레임워크가 해당 기능을 커스터마이징 하는 것을 제한하고 있다. -> 못 만듦 or 코드를 다른 언어로 리라이팅 해야 함.)


(라이브러리 예시 : jQuery)

(프레임워크 예시 : django : 어드민 패널을 만들려면 무조건 admin.py 파일명을 통해 바꿔야 한다. URL을 바꾸려면 url.py라는 파일명을 써서 바꿔야 한다.)


*주의 : framework와 library는 특정 코드가 작동하는 컨셉의 차이이다. 내가 코딩하는 규칙을 정하면 보통 library라고 보고, 규칙을 정하기 상당히 제한적이면 framework라고 부른다.

그럼에도 몇몇 기능들은 framework인지 library인지 구분이 어렵기도 하다. (ex. React)


프레임워크가 필요한 기능을 제한하고 있어서 모든 서비스 코드를 확장성 높은 언어로 리라이팅 하고 있는 개발자의 모습


3. 유닉스, 리눅스 (이 개념은 쉽게 쓸 수 없었다.)


 유닉스(Unix) 기계어에 가까운 언어인 어셈블리어로 개발한 컴퓨터 운영 체제. 주로 서버 개발이나 시스템 개발에 쓰이며, macOS나 리눅스(Linux), 안드로이드(Android) 등 오늘날 많은 운영 체제의 원형이 되었다.


리눅스(Linux) 유닉스 계열에 속하는 오픈소스 운영체제. 서버 개발 및 구축, 수퍼컴퓨터, 임베디드 기기, 스마트폰 OS 개발 등 다양한 용도로 활발하게 사용되고 있다. 리눅스를 개량해서 만든 배포판도 상당히 많다.


IT Product(App, Web, SaaS)를 다루는 PM이라면 이 녀석들이 서버 개발 및 구축 & 임베디드 기기에 들어간다는 것만 알아도 충분하다.


임베디드 기기 : 에어컨에 들어가는 프로그램, 화장실 센서 프로그램, 자판기에 들어가는 프로그램 etc


(우분투(Ubuntu)와 데비안(Devian)이 대표적.)

마법의 명령어 sudo




 이렇게 서비스 기획자/PM이 알아야 한 아주 아주 아주 아주 아주 기초적인 용어들을 살펴보았다. 물론 정의가 굉장히 러프하기 때문에, 어디 가서 이 작가가 이렇데요! 하시면 안된다.... 정확한 설명이 아닐 수 있다.


본 글이 생소한 개발 용어를 이해하는데 조금이라도 도움이 되었기를 희망한다.


그럼 다음 글에서 만나요!

 

매거진의 이전글 PM/PO가 개발자, 디자이너와 효과적으로 일하려면 ?
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari