티스토리 뷰

반응형

◈소개

많은 사람들이 21세기 정보화 시대에 개발자가 되고 싶어 하지만, 아이러니하게도 실력이 뛰어난 개발자는 점저 더 찾기 힘든 것입니다. 대학에서 컴퓨터 공학을 전공하지 않아도, 또는 대학을 나오지 않아도 개발자가 될 수 있는 시대에서 각자가 생각하는 훌륭한 개발자가 되기 위한 덕목은 다를 것입니다. 근데 개발자든 뭐든 기본부터 시작하는 게 중요합니다. 오늘 제가 소개할 책은 개발자가 되기 위해 꼭 알아야 하는 용어들입니다. 기본이 탄탄해야 뭐든지 발전된 모습으로 나아갈 수 있습니다. 크게 4파트로 웹에선 웹 1.0,2.0,3.0을, 네트워크/통신/데이터에서는 OSI 7 계층, 데이터베이스/자료구조에서 데이터베이스, 데이터 마이닝과 해시, 소프트웨어 공학 파트에선 클라이언트와 서버 바탕으로 소개하고자 합니다. 개발자가 되기 위해선 기본 지식을 갖추는 덕목이라고 할 수 있을 것 같습니다. 

◈웹, 이것은 무엇인가?

웹은 탄생 이래로 단계를 거쳐 발전해 왔습니다. 웹 뒤에 붙어 있는 숫자는 웹의 발전 단계를 의미합니다. 읽기 전용인 웹 1.0, 쓰기 기능이 추가되어 상호 작용 측면으로 성장한 웹 2.0 그리고 시맨틱 마크업 및 웹 서비스에 중점을 둔 웹 3.0까지 각각 독특한 특징을 지니고 있습니다. 웹은 World Wide Web의 줄임말로, 인터넷 위에서 동작하는 서비스입니다. 사용자들이 정보를 나누는 정보의 공간을 웹이 제공해 줍니다. 웹은 하이퍼텍스트 구조를 활용해서 인터넷상의 방대한 양의 정보를 서로 연결해 줍니다. 정보들이 서로 연결되어 있는 형태가 실이 엉켜 있는 거미줄 모양과 유사해 거미줄을 의미하는 web이라는 단어를 그대로 사용하게 된 것입니다. 웹의 발전 단계가 있는 데 초기 버전 웹 1.0, 그다음 버전 웹 2.0 마지막으로 웹 3.0 등의 차이점을 알아보도록 하겠습니다. 웹 1.0은 가장 초기 버전입니다. 웹 1.0의 키워드는 읽기 전용입니다. 웹이라는 개념이 처음 나온 당시에는 웹의 종류가 지금처럼 다양하지 않았습니다. 소수의 사람만이 웹을 창작했고 콘텐츠를 제작한 사람만 정보의 권한을 가지고 있었습니다. 웹 1.0은 사용자가 주어진 정보를 받아들이기만 하는 수동적인 웹입니다. 인터넷에서 아무 회사 홈페이지에 접속해 보면 회사 소개, 미션과 버전 같은 정보들이 잘 정리되어 있는 것을 볼 수 있습니다. 정보는 소유권자가 가지고 있고 상대방은 정보를 열람만 할 수 있는 형태가 웹 1.0입니다. 웹 2.0의 키워드는 참여형입니다. 웹 1.0과의 차이는 읽기에 쓰기가 더해져 사용자와 정보 간 상호 작용이 가능하다는 점입니다. 웹 2.0이 등장한 후 사용자들은 정보를 읽는 것에만 그치지 않고 자신들의 정보와 의견을 웹상에서 공유할 수 있게 되었습니다. 웹 3.0 시대를 설명하는 키워드는 탈중앙화와 맞춤형입니다. 웹 2.0에서는 사용자들의 참여가 활발해졌지만, 사용자들이 생성해 낸 데이터는 대개 하나의 웹 플랫폼에 속해 있습니다. 예를 들면 유튜버들이 동영상을 만들어 유튜브라는 플랫폼에 속해 있습니다. 예를 들면 유튜버들이 동영상을 만들어 유튜브라는 플랫폼에 자신들의 영상을 올려 다른 사람들에게 전달합니다. 동영상 제작자는 개인이지만 모든 영상은 플랫폼인 유튜브에 속하게 됩니다. 이러한 형태를 서버-클라이언트 관계라고 합니다. 정보가 한 장소에 모이는 것입니다. 하지만 웹 3.0에서는 정보가 중앙으로 몰리는 서버-클라이언트 관계가 아닌 탈중앙화를 지향합니다. 탈중앙화는 정보를 분산하여 저장하는 블록체인 기술을 통해 실현할 수 있습니다. 정보의 소유자 역시 블록체인이 활용된 NFT로 증명할 수 있습니다.

◈네트워크/통신/데이터에서의 OSI 7 계층 알아보기

네트워크/통신/데이터에서의 파트로 OSI(Open System Interconnection)의 약자는 개방형 시스템 간의 상호 연결을 의미합니다. 국제 표준화 기구인 ISO에서 개발한 모델로 컴퓨터 네트워크의 프로토콜 디자인과 통신을 계층으로 나누어 설명한 것입니다. 7 계층에는 응용 프로세스 간, 추상화된 계층, 텔넷, FTP, SMTP 등, 6 계층에는 인코딩, 암호화, 압축, 데이터 반환 5 계층에는 동기화, 세션 연결 설정/해제, 서비스 인증 및 허가 4 계층 엔드 투 엔드, 송/수신자 간 통신, TCP/UDP, 세그먼트/데이터그램 3 계층에는 QoS, 라우팅, 흐름 제어, 세그먼테이션, 오류 제어, IP주소, 패킷 2 계층에는 포인트 투 포인트, 오류 제어, 흐름 제어, MAC 주소, 브리지, L2 스위치, 프레임 1 계층에는 하드웨어 전송 기술, 리피터, 허브 등이 있습니다. OSI 7 계층의 이용 예로, 친구에게 이메일을 보내는 상황을 가정해 보겠습니다. 송신 호스트인 사람은 OSI 7 계층의 최상위 계층인 응용 계층을 통해 데이터 송신이 하위 계층으로 차례대로 전달되도록 요청하고 이 요청은 최하위 계층인 물리 계층으로 전송됩니다. 그다음, 친구인 수신 호스트의 물리 계층으로 전달되어 역순으로 OSI 7 계층의 상위 계층인 응용 계층으로 전송됩니다. 네트워크 통신에서 데이터는 이러한 과정을 통해 OSI 7 계층을 이용합니다.

◈데이터베이스/자료구조

데이터베이스는 공동의 목적을 지닌 다수의 사람이 공유하고 관리하는 데이터의 집합을 의미합니다. 일반적으로 컴퓨터 시스템에 저장되는 구조화된 정보 또는 조직화된 데이터의 모음입니다. 데이터베이스를 알아야 하는 이유로는 우리는 현재 4차 산업혁명 시대에 살고 있습니다. 4차 산업혁명의 핵심 기술에는 인공지능, 불록체인 등이 있으며 데이터는 4차 산업혁명의 핵심 자원입니다. 인공지능과 블록체인을 이해하기 위해서는 데이터를 이해해야 하고, 데이터들이 어떻게 관리되고 활용되는지 알아야 합니다. 데이터는 우리 일상과 매우 밀접하게 연관되어 있어 최소한의 지식을 갖추고 있어야 현상을 이해하는 데 도움이 됩니다. 데이터 마이닝을 알아보겠습니다. 데이터 마이닝은 많은 양의 데이터 중에서 의미 있거나 유용한 정보를 추출하는 과정을 의미합니다. 전통적인 데이터 분석 방식으로는 찾기 어려운 데이터 내부의 패턴, 연관성, 변화와 규칙 같은 중요한 정보를 발견하고 활용하기 위해 사용합니다. 데이터 마이닝을 알아야 하는 이유로는 두 가지로 나뉘는 데 먼저 데이터 형태의 변화로 기존에 기업에서 사용하던 데이터는 구조와 관리 체계가 잡혀 있는 정형 데이터로서 자료의 구조나 표현 방식, 자료 간의 관계가 정의되어 있었습니다. 그러나 현재 수집, 활용되는 대부분의 데이터 형식은 이미지, 영상, 로그 등 틀이나 구조가 잡혀 있지 않은 비정형 데이터입니다. 더 나아가 센서나 RFID 등에서 수집하는 사물 정보, 인지 정보 유형 데이터들의 비중이 높아지고 있습니다. 기존 기술로는 이러한 비정형 데이터를 처리하기에 부적합하기 때문에 데이터 마이닝의 활용도와 필요성이 더 높아지고 있습니다. 다음은 데이터 기반의 의사결정의 확산입니다. 과거에 비해 결정에 대한 불확실성이 증가함에 따라 많은 기업에서 데이터의 중요성을 실감하고 있으며 보다 합리적이고 효과적인 데이터 기반 의사결정을 통해 경쟁력을 확보하고 있습니다. 의미 있는 데이터 기반 의사결정을 하기 위해서는 기본적으로 데이터에 대한 이해와 정확한 분석이 기반이 되어야 하는데, 데이터 마이닝은 이러한 역량을 키우는 데 매우 효과적입니다. 자료구조에서 해시에 대해 이야기하겠습니다. 해시는 데이터를 저장하고 검색할 때 사용하는 자료 구조 중 하나입니다. 정확하게는 특정한 함수를 사용하여 추출한 값을 활용하는 것입니다. 여기서 말하는 함수는 입력되는 데이터들끼리 충돌이 발생하지 않게 정리하는 알고리즘입니다. 실제로 이 알고리즘을 어떻게 구현하는지에 따라 사용 용도와 성능이 달라집니다.

◈소프트웨어 공학을 알아야 된다.

클라이언트와 서버는 네트워크를 통해 데이터를 주고받는 소프트웨어 혹은 기계장치를 의미합니다. 두 개의 기계장치 혹은 소프트웨어의 역할 관계를 의미하는 데 웹 사이트에서 정보를 검색할 때 해당 정보를 요청하는 것이 클라이언트, 요청을 받아 정보를 제공하는 것이 서버입니다. 클라이언트/서버를 알아야 하는 이유로는 웹/앱 프로그래밍이 이루어지는 두 개의 큰 분야가 클라이언트와 서버이고 가장 기초가 되는 개념이기 때문입니다. 웹/앱 개발자는 크게 프런트엔드와 백엔드 개발자로 구분할 수 있습니다. 프런트엔드 개발자는 사용자들이 이용하는 클라이언트 프로그램 즉, 웹/앱을 시각화하여 이미지로 구현하는 역할을 합니다. 백엔드 개발자는 클라이언트 프로그램에 필요한 데이터를 제공하는 서버를 관리하는 역할을 합니다. 클라이 언/서버에 대한 개념을 알고 있어도 앞으로 자신이 어떤 분야의 개발자가 될지 혹은 어떤 공부를 할지 결정할 수 있습니다.

 

 

 

 

 

 

반응형