다른 서비스
NEW
기획
디자인
개발
프로덕트
아웃소싱
프리랜싱
비즈니스
최근 검색어
전체 삭제
최근 검색어가 없습니다.

개발

주니어 개발자를 위한 엄청 쉬운 네트워크 이야기

 

네트워크
<출처: pixabay>

 

저는 5년차 개발자입니다. 회사에서 신입 개발자들과 함께 일하다 보면 네트워크에 관해 모르는 분들이 많으시더군요. 저도 사실 처음에는 그랬습니다. 그런데 일을 하다 보니 주니어 개발자가 더 성장해 중니어 이상으로 도약하려면 네트워크 지식이 꼭 필요하다는 것을 알게 됐습니다. 

 

특히 회사에서 주어진 업무만 하다가 개발자로서의 역량을 향상시키기 위해 토이 프로젝트를 하고, 이를 배포, 운영하려 하면 개인서버나 AWS와 같은 클라우드 서비스를 접하게 될 텐데요.

 

AWS를 예로 들면, EC2 인스턴스를 띄우고 보안 그룹을 설정, 리눅스 원격 접속, 웹 서버 설치 (패키지 설치 or Docker 설치)등 많은 과정을 스스로 해결해야 합니다. 블로그를 보면서 무작정 따라해도 좋은 경험을 얻을 수 있으나, 여기에 네트워크에 대한 지식이 있다면 해당 과정을 더 잘 이해할 수 있을 것입니다.

 

그래서 이번 글에서는 우선 주니어 개발자가 네트워크를 알아야 하는 이유를 설명하고, 네트워크를 아예 모르는 분들도 이해할 수 있도록 쉽게 풀어 이야기해보겠습니다. 

 

주니어 개발자가 네트워크를 알아야 하는 이유

제가 프로그래머로서 네트워크 지식의 필요성을 느꼈던 상황은 여러 번이 있었지만, 2가지만 언급해 보겠습니다.

 

토이 프로젝트를 진행할 때였습니다. 돈을 지출하지 않고 인터넷에 웹 콘텐츠를 제공하기 위해 집 컴퓨터를 서버환경으로 구성하고 싶었습니다. 당시 원룸에 살던 저는, 공유기를 통해서 인터넷에 접속하고 있었는데요. 외부에서 저의 컴퓨터로 접근하기 위해 공유기의 포트 포워딩 기능을 이용해야 했었습니다. 공유기 외부IP의 특정포트(ex: 80번)로 데이터가 들어오면, 저의 컴퓨터에서 실행중인 웹서버로 들어오도록 하여, 콘텐츠를 제공하는, 나만의 웹서버를 만들었습니다.

 

또 쿠버네티스를 공부할 때도 네트워크 지식을 알아야겠다는 생각이 들었습니다. 환경구성을 위해 물리적인 컴퓨터가 여러 대 필요하여, AWS에서 인스턴스를 할당받고 내부망으로 노드들을 연결한 후 오토 스케일링을 하는 등 네트워크와 관련된 행동들이 많았습니다.

 

개발자 역할이 체계적으로 분리된 회사에서 일하는 주니어 개발자라면, 인프라팀이나 DevOps팀에서 서버 구성을 별도로 하기 때문에 이를 접할 기회가 아직은 없을 수 있습니다.

 

하지만 경력이 늘어감에 따라 아키텍처를 고려하여 의사결정을 진행할 일이 생기고, 또 다른 팀과의 업무회의에서도 커뮤니케이션이 필요해지기 때문에 네트워크뿐 아니라 등 기본적인 CS(Computer Science) 지식이 중요합니다.

 

그리고 웹 개발자로서, 웹 브라우저에서 요청한 웹 사이트가 어떻게 웹 서버를 찾아서 데이터를 가져오고 컴퓨터 화면에 페이지가 뜨는지 정도는 알고 있어야 한다고 생각합니다. 

 

 

네트워크란?

그렇다면 컴퓨터 네트워크란 무엇일까요? 저는 “두 대 이상의 컴퓨터가 연결되어 통신하는 것” 과 같은 딱딱한 정의만 말하고 넘어가고 싶지 않습니다.

 

이번 글에서는 네트워크를 모르시거나 단어 정도만 알고 계신 보신 분들을 위해, 최대한 이해하기 쉽도록 제가 만들어낸 이야기를 통해 소개하고자 합니다. 네트워크란 것은 눈에 보이지 않기 때문에 더 어려운데요, 눈에 보이듯 이해할 수 있도록 ‘컴퓨터 마트’라는 가상의 마트가 확장되는 과정을 네트워크에 빗대어 상상해봤습니다. 쉬운 설명을 위해 비유와 생략을 많이 한점 참고해 주시기 바랍니다.

 

 

컴퓨터 네트워크를 만들다

옛날 옛적 IT초창기 시절, 한국의 한 마을에 사는 김씨가 컴퓨터 마트 라는 이름으로 마트를 운영하고 있었습니다. 주인 김씨는 마트 장부를 매달 컴퓨터 엑셀로 관리하고 있었습니다. 이후 장사가 잘되자 마트는 옆 동네까지 진출하였고, 컴퓨터 마트 2호점이 생겼습니다. 1호점에서 일하고 있던 창업자 김씨는 2호점의 매출이 궁금하여 2호점에 장부를 요청하게 됩니다.

 

컴퓨터 네트워크
우편으로 엑셀 문서를 주고받는 두 마트 <출처: 작가, 아이콘: flaticon>

 

IT가 아직 초창기인 옛날 옛적이라, 2호점에서는 엑셀을 프린트하여 우편으로 장부를 보냈습니다. 그런데 매달 장부를 우편으로 요청하고 응답 받는 것은 시간이 너무 오래 걸리는 일이었습니다. 그러자 컴퓨터를 좀 아는 창업자 김씨는 다른 방법을 생각하게 됩니다. 바로 컴퓨터를 서로 연결하여 데이터(엑셀)를 보내는 것입니다.

 

김씨는 이것을 컴퓨터 네트워크라 부르기로 했습니다.

 

컴퓨터 네트워크
컴퓨터 네트워크로 엑셀을 주고받는 두 마트 <출처: 작가, 아이콘: flaticon>

 

이제 두 대의 컴퓨터가 직접 연결되어 서로 요청과 응답을 보내게 되었습니다. 더 이상 우편 배달을 하지 않아도 되게 된 것입니다.

 

약속(프로토콜)을 정하다

그런데 이때 문제가 발생했습니다. 각 컴퓨터는 데이터를 주고받는 형식을 지정할 수 있었는데, 2호점에서는 엑셀의 데이터를 아래와 같이 제목, 작성날짜, 형식, 내용 순서로 보냈습니다.

 

1.제목: 이번 달 2호점 장부

2.작성날짜: 2023년 1월 19일

3.형식: 엑셀

4.내용:

 

그러나 내용이 중요하다 생각한 창업자 김씨는, 제목 다음으로 내용을 받도록 데이터 형식을 지정해버렸습니다. 

 

1.제목: 이번 달 2호점 장부

2.내용: 2023년 1월 19일

3.작성날짜: 엑셀

4.형식:

 

그래서 2호점의 ‘작성날짜’ 데이터가 1호점에 왔을 때는 ‘내용’ 항목에 들어가게 되어, 내용이 날짜가 된 채로 보이는 황당한 상황을 겪게 된 것입니다.

 

창업자 김씨는 즉시, 내용을 두 번째에 넣자는 약속을 2호점 주인과 체결했습니다. 그리고 이러한 약속된 데이터 형식을 프로토콜이라고 부르기로 했습니다.

 

허브의 등장

드디어 컴퓨터 마트는 서로 빠른 속도로 매출정보를 공유하게 되어, 그것을 바탕으로 사업이 번창했습니다. 3호점까지 생겨나게 됐죠. 그러나 또 문제에 부딪히게 됩니다. 마트가 두개였을 때는 두 대의 컴퓨터를 직접 연결하였으나, 세 대가 되자 컴퓨터마다 나머지 두 대를 각각 연결할 수 있도록 두 개의 선이 필요했던 것입니다.

네트워크 허브
컴퓨터 세 대가 연결되는 경우 컴퓨터 마다 선이 두 개씩 필요하다 <출처: 작가, 아이콘: flaticon>

 

계속해서 지점을 늘려나갈 생각이던 김씨는, 매번 마트가 늘어날 때마다 컴퓨터에 선을 연결하게 되면 컴퓨터와 컴퓨터를 연결하는 선이 기하급수 적으로 늘어날 것이라고 생각했습니다.

네트워크 허브
지점이 늘어날수록 연결 선도 더 많이 필요해지는 구조 <출처: 작가, 아이콘: flaticon>

 

그래서 컴퓨터끼리 직접적으로 연결하지 않고 중앙에 하나의 장치를 두기로 하였습니다.

네트워크 허브
허브의 등장 <출처: 작가, 아이콘: flaticon>

 

중앙에 위치한다는 의미로 허브라 부르기로 합니다. 허브가 생기니 컴퓨터마다 복잡하게 선을 연결해야 할 필요가 없어졌습니다. 간단하게 허브 하나로만 연결하면 되었습니다.

 

스위치의 등장

하지만 문제가 모두 해결된 것은 아니었습니다. 허브는 단순히 자신에게 들어온 데이터를 연결된 컴퓨터로 보내주기만 했습니다. 그러다 보니 또 아래와 같은 문제가 발생했습니다. 2호점에서 사과가 많이 팔리는 것을 알게 된 김씨는 컴퓨터 네트워크를 통해 2호점으로 메시지를 보내게 되었습니다. “요즘 사과가 잘 팔리는 것 같은데, 사과 물량을 늘리시죠.”

네트워크 허브
2호점에게만 보내고자 했던 메시지가 같은 허브에 연결된 3호점에게도 전달돼 잘못된 의사결정을 하게 됐다 <출처: 작가, 아이콘: flaticon>

 

그런데 그만 허브에 연결된 3호점에게도 같은 내용이 전달되어, 3호점에선 잘 팔리지도 않는 사과 물량을 늘려 버린 것입니다.

 

문제점을 깨달은 김씨는 특정 컴퓨터에만 데이터를 전달할 수 있도록 이름을 붙이기로 합니다. 또한 단순하게 데이터 전달만 하던 허브를, 데이터의 방향 전환이 가능한 장치로 향상시킵니다.

네트워크 스위치
스위치의 등장. 데이터가 전달되는 방향을 전환할 수 있다. <출처: 작가, 아이콘: flaticon>

 

이를 데이터의 전환이 가능하다는 의미로 스위치라고 부르기로 했습니다.

 

2호점에만 메시지를 전달하기 위해 프로토콜도 변경해야 했습니다. 보내는 컴퓨터의 정보와 받는 컴퓨터의 정보를 프로토콜에 추가하여, A에서 B로 장부 요청 시, B에서는 보낸 컴퓨터가 A라는 것을 확인하고, 프로토콜의 받는 컴퓨터로 입력하여, 정확하게 응답할 수 있게 되었습니다.

네트워크

 

세계를 잇는 라우터

네트워크 LAN
LAN의 등장 <출처: 작가, 아이콘: flaticon>

 

시간이 흘러 대기업이 된 컴퓨터 마켓은, 한국을 포함, 중국, 일본까지 진출하여 각 나라별로 네트워크를 이루고 있었습니다. 이를 나라마다 각자의 지역 네트워크를 형성하였다 하여, LAN(Local Area Network)이라 부르기로 하였습니다.

 

네트워크에 통달한 컴퓨터 마트 창업자 김씨에게는 이제 한 가지 과제만 남아 있었습니다. 바로 각 나라를 연결하여 데이터 통신이 가능하도록 하는 것입니다.

 

네트워크 LAN
각 나라의 스위치를 연결하면 전 세계 네트워크가 형성될까? <출처: 작가, 아이콘: flaticon>

 

김 씨가 처음 떠올린 방법은 각 나라마다 존재하는 스위치를 모두 서로 연결하는 것이었습니다. 나라 별로 거리는 멀지만, 당장은 스위치 개수가 적어 충분히 가능해 보였습니다. 그러나 LAN 내부에서 확장을 고려했을 경우 이는 좋은 방법이 아니었습니다.

 

네트워크 LAN
스위치만 연결할 경우, 스위치 개수가 많아지면 벌어지는 일 <출처: 작가, 아이콘: flaticon>

 

각 나라별로 1개씩만 스위치가 늘어나게 되더라도 엄청나게 복잡한 상황이 될 것이라고 생각한 것입니다.

 

네트워크 LAN
<출처: 작가, 아이콘: flaticon>

 

그래서 이러한 문제점은 각 나라를 대표하는 장치를 두어 연결하는 것으로 해결하기로 했습니다. 그리고 나라의 경로를 표시한다는 의미로 이 장치를 라우터라고 부르기로 했습니다.

 

더불어, 다른 나라로 데이터를 요청하기 위해 프로토콜을 개선할 필요가 있었습니다. 보낸 나라와 받은 나라의 정보가 다음과 같이 포함되어야 했습니다. 

 

보낸 컴퓨터: A

받는 컴퓨터: H

보낸 라우터: KOR

받는 라우터: JAP

제목: 2호점으로 메시지 테스트

내용:

작성날짜: 2023년 1월 19일

형식: 메시지

 

이리하여 동아시아를 기점으로 전세계로 진출한 컴퓨터 마트는, 전 세계가 연결된 네트워크인 인터넷을 만들게 되었습니다. 

 

어떠신가요? 많은 단계를 생략하고, 이해를 돕고자 이야기를 만들었습니다. 하지만 실제로도 세상은 이와 비슷하게, 수많은 사람들이 공통된 약속(프로토콜)을 만들어 인터넷 세계에서 데이터 통신을 하고 있습니다. 

 

사람과 사람이 대화를 하듯이, 컴퓨터와 컴퓨터는 서로 통신을 합니다. 대화에 쓰이는 문장에도 주어, 목적어와 같은 문법이 존재하는 것처럼, 통신을 할 때 필요한 데이터에도 일종의 문법이 있습니다. 다음 시간에는 이 데이터가 어떤 구조로 생성되어 송신, 수신이 이루어지는지, 그 문법을 단계별로 알아보겠습니다. 이제 OSI 7계층, TCP/IP 같은 용어를 만나게 될 것입니다.

 

요즘IT의 모든 콘텐츠는 저작권법의 보호를 받는 바, 무단 전재와 복사, 배포 등을 금합니다.

댓글 18
archmond
            개념잡는데 꿀이네요!
          
2023.01.26. 오후 18:32

Morian

궁금한 내용이 있으면 이해가 될 때 까지 파고드는 5년차 백앤드 개발자입니다.

같은 분야를 다룬 글들을 권해드려요.

요즘 인기있는 이야기들을 권해드려요.

일주일에 한 번!
전문가들의 IT 이야기를 전달해드려요.

[구독하기] 버튼을 누르면 개인정보 처리방침에 동의됩니다.

일주일에 한 번! 전문가들의 요즘IT 이야기를 전달해드려요.

[구독하기] 버튼을 누르면 개인정보 처리방침에 동의됩니다.