brunch

기획을 위한 최소한의 개발 지식 (3)

네트워크, 클라이언트, 서버

by Innobanker

목차


✅ 컴퓨터의 구성 요소와 운영체제

프로그래밍 언어

네트워크, 클라이언트, 서버 ⬅︎

✅ 스크래핑, API, JSON

✅ App 과 Web

✅ 네이티브, 리액티브, 웹앱, 하이브리드

✅ 데이터베이스

✅ 프레임워크, 라이브러리

✅ 개발팀 협업 방법

✅ 클라우드


아마 실무에서 가장 많이 쓰는 단어가 '서버', '백엔드', '클라' 일 거다. 데이터를 서버에서 '호출한다' 는 표현도 참 많이 쓴다. S/W를 구축할 때 'OO 버튼을 누르면 OO 페이지가 뜨도록 한다' 라는 간단한 기능을 만들 때에도 '백엔드'와 '클라'를 구축하는 순서와 각자 맡은 역할이 다르다. 이 외에도 앱을 구동할 때 '로딩이 오래 걸린다' 는 표현도 자주 쓰는데 어디에서 뭘 어떻게 '로드' 한다는 건지 기본적인 틀을 알고 이해하는 것과 모르는 건 다르다. LTE에서 5G까지 이제는 통신기술이 발달하면서 앱도 전부 설치해 놓고 쓰는 게 아니라 스트리밍 처럼 필요할 때만 쓰는 날이 올 거라고 하는데, 기술 발달의 속도가 빨라지면서 알아야 할 것도 점점 많아지니 미리 조금씩 기본 틀을 익혀 두면 도움이 될 것 같다.


☑️ 네트워크, LAN, MAN, WAN : '네트워크'란 컴퓨터와 컴퓨터를 연결하는 통신 기술이다. LAN(Local Area Network)은 흔히 '랜선'으로 부르는 유선으로 연결된 아파트나 커피숍 등 300m 이하의 작은 지역이다. MAN(Metropolitan Area Network)는 도시 내의 여러 LAN을 하나로 연결한 것이고, WAN(Wide Area Network)은 도시와 도시, 나라와 나라를 연결한 네트워크이다. WAN을 사용하는 것이 곧 인터넷을 사용하는 거다. 거리가 멀어 고속 데이터 송수신이 어렵고, 인터넷 제공업체(ISP)가 관리한다.


☑️ WLAN, SAN, VPN : WLAN(Wireless LAN)은 전파를 이용한 무선 네트워크로 Wi-Fi가 여기에 속한다. SAN(Storage Area Network)은 스토리지를 보안성있게 관리하기 위한 네트워크이며, VPN(Virtual Private Network)은 저렴한 비용으로 보안을 위한 임대 회선을 사용하는 것과 같은 효과를 내는 암호화 네트워크이다.


☑️ IP주소 : 컴퓨터의 주소이다. 앱스토어에서 '설치' 버튼을 누르면 해당 스마트폰에서 앱스토어가 갖고 있던 앱 설치파일을 요청하게 되고 WAN을 통해 해당 IP 주소로 파일을 다운로드 하게 된다.


☑️ 서버, 클라이언트 : 프로그램의 동작에 필요한 파일들을 저장한 여러 대의 컴퓨터를 하루종일 켜 놓는데 이걸 서버라고 한다. 여러 컴퓨터에서 요청이 한꺼번에 몰리면 서버가 다운되기도 한다. 서버가 열을 받으면 불이 날 수 있기 때문에 서버실의 냉방 시설도 중요하다. 서버는 대개 보이지 않는 곳에 있기 때문에 '백엔드' 라고도 부른다. 파일을 요청하는 각각의 컴퓨터를 '클라이언트' 혹은 '프론트엔드' 라고 한다.


☑️ 리눅스 : 리눅스는 Mac 과 같은 OS 의 일종인데 무료로 제공하기 때문에 주로 리눅스 위에서 서버를 돌리는 경우가 많다. 리눅스의 버전으로는 Ubuntu, Red hat, Android 등이 있다. 무료로 제공하는 대신 Window나 Mac처럼 그래픽 UI 를 지원하지 않고 명령어로 동작시켜야 한다.


앱에서 로그인 버튼을 누르면 내가 갖고 있는 스마트폰에서 로그인 처리가 끝나는 게 아니라, 내 스마트폰 App (프론트엔드) 에서 '로그인 요청'을 하고 서버에서 '기존에 ID가 있는지' 와 '정확한 ID를 입력했는지' 등을 판단해서 성공 혹은 실패 여부를 '응답'해 준다. 조금 더 상세히 들어가면 '토큰'이 생성되고 토큰에는 유효기간이 있어 로그인 후 일정 시간 동안 앱을 사용하지 않으면 자동으로 로그아웃이 된다고 알림을 준다.


이렇게 기본지식은 간단한 개념 몇 개 뿐이지만 실질적으로 구현하려는 기능 별로 다양한 기술이 쓰인다. access token 이나 refresh token 등 얼핏 복잡해 보이는 개념들도 서버와 클라이언트 라는 틀을 가지고 바라보면 생각보다 쉽게 이해할 수 있다. 기획자에게 필요한 건 어떤 로그인 방식이 서비스에 적절한지 판단하는 것, 로딩 속도가 빨라지도록 화면을 최대한 심플하게 기획하는 것, 로그인을 요청할 때와 응답할 때에 어떤 시나리오가 발생할 수 있는지 미리 알고 사용자에게 적절한 알림을 주는 것 등이라고 생각한다. 보안 수준을 높이기 위한 비밀번호의 길이나 형식 등은 보안 담당자분과 개발자분에게 믿고 맡길 필요가 있다.



참고 자료


<비전공자를 위한 이해할 수 있는 IT 지식>, 최원영, 2021.02.01., T.W.I.G.

<WAN? WLAN? 어디에 쓰는 걸까>, CCTVNews 최형주 기자, 2020.10.06., http://www.cctvnews.co.kr/news/articleView.html?idxno=210852

<토큰 기반의 로그인 인증 방법 이해하기 (JWT)>, by HomieKim, 2022.4.30., https://hoime.tistory.com/94

<앱 서비스 장애편 #1 - 화면 로딩 속도>, 손영수, 2021.03.03., https://blog.imqa.io/app_failure_launch_time/

<[마소캠퍼스] 5G가 모바일 앱 혁신을 위한 토대를 어떻게 마련할까요?>, https://www.masocampus.com/article-how-5g-will-pave-the-way-for-mobile-app-innovation/


keyword
작가의 이전글기획을 위한 최소한의 개발 지식 (2)