시작하기 앞서
- 이 포스팅은 생활코딩의 WEB2 - Home Server 수업과 DATABASE1 수업을 공부한 후 상기 내용을 복습하고자 적는 글임을 밝힙니다!
- 해당 개념에 대해 머릿속으로 충분히 정리되지 않은 상태에서 포스팅하는 글이니만큼 해당 정보의 신뢰도가 낮고 해당 정보에 대한 오류가 있을 수 있습니다.
시작하기 앞서 2 - 네트워크와 DB를 공부하는 이유
- 스파르타코딩클럽의 '왕초보코딩반'을 수강하며 파이썬을 통해 웹의 특정 정보를 크롤링하고 DB에 저장하는 방법을 배웠다. 그리고 DB에 저장된 정보를 원하는 포맷으로 가공하여 내 웹페이지에 활용하는 방법을 배웠다.
- 그러나 진도가 굉장히 빠른 해당 교육의 특성상 DB에 대한 전반적인 지식을 충분히 얻는 것은 힘든 일이었다.
- 사실 진도가 너무 빨라서 중간부터 진도를 따라가지 못했다...
- 그래서 추가적으로 DB를 공부해야겠다고 생각했다. 그리고 (별개로) 서버와 클라이언트가 통신하는 구체적인 방법이 궁금해져서 네트워크 관련된 공부도 진행했다.
1. WEB2 - Home Server 복습
위 수업을 통해 알게된 것은 크게 네 가지다. 첫 번째, IPv4가 무엇이고 IPv6가 무엇인지. 두 번째, 실생활에서 매번 사용하는 공유기(router)가 무엇인지, 공인 IP 주소(Public IP Address)와 사설 IP 주소(Private IP Address)가 무엇이고 어떻게 다른지. 세 번째, 유동 IP 주소(Dynamic IP Address)와 고정 IP 주소(Static IP Address)가 무엇이고 어떻게 다른지. 마지막 네 번째, DHCP가 무엇인지. 각각의 개념을 간략하게 살펴보자.
첫 번째, IP란 무엇인가. 그리고 IPv4와 IPv6의 차이
IP는 Internet Protocol의 약자로 인터넷 내의 해당 컴퓨터의 고유한 주소를 의미한다. IP 주소라고 흔히 이야기하며 IPv4와 IPv6로 나눌 수 있다.
IPv4는 전통적(?)인 IP 주소 포맷으로 Internet Protocol version 4를 의미한다. 전세계적으로 사용된 첫 번째 인터넷 프로토콜로 IPv6와 함께 현재 인터넷에서 사용되는 유일한 프로토콜이다. 000.000.000.000 ~ 255.255.255.255의 총 12개의 번호로 구성되며 약 42억 개의 IP 주소를 지정할 수 있다. 과거에는 IPv4로도 충분히 인터넷에 대한 수요를 감당할 수 있었지만 IoT, 스마트폰, 클라우드 컴퓨팅 등 혁신적인 기술이 도입됨과 동시에 인터넷에 대한 수요가 폭발적으로 증가하자 안정적인 수요 충족을 위해 새로운 프로토콜이 요구되었다. 이 요구 하에서 탄생한 것이 바로 IPv6이다.
IPv4가 약 42억개의 주소를 할당할 수 있었던 것과 달리, IPv6가 할당할 수 있는 주소의 수는 2823,6692,0938,4634,6337,4607,4317,6821,1456개에 달한다(2823구 6692양 938자 4634해 6337경 4607조 4317억 6821만 1456개). 인간의 지성으로는 거의 무한에 가까운 숫자... (포맷은 2001:0db8:85a3:08d3:1319:8a2e:0370:7334 같은 형태다.)
두 번째, 공유기(router) 그리고 공인 IP 주소(Public IP Address)와 사설 IP 주소(Private IP Address)
공유기는 IP 주소가 IPv4에서 IPv6로 넘어가는 과도기에 IPv4 프로토콜 하에서의 IP 주소의 사용을 줄이기 위한 기계이다. 공유기 하나에 여러 개의 기기를 연결하여 한개의 IP 주소를 공유기를 공유하는 모든 기기들이 사용할 수 있게 해준다. 원래였다면 모든 기기에 서로 다른 IP를 부여해야 했던 것을 공유기를 이용함으로써 해소할 수 있는거다.
그렇다면 한 공유기를 공유하는 서로 다른 기기들은 어떻게 구별할 수 있을까. 이를 해결하기 위해, 공유기를 공유하는 기기들은 공유기를 중심으로 새롭게 넘버링 된다. 이를 사설 IP 주소라고 한다. 반대로 공유기가 가지는 고유한 IP를 공인 IP 주소라고 칭한다.
예를 들어 동수가 총 10개인 아파트 단지를 떠올려보자. 아파트 단지의 이름이 (예를 들어) '행복아파트'라면 행복아파트 내에 있는 각각의 아파트 동 역시 '행복아파트' 소속의 동이 될 것이다. 여기에서 '행복아파트'는 모든 아파트 동을 대표하는 명칭이 된다. '행복아파트'는 각각의 동들을 대표하는 공인 IP의 개념을 갖는다. (외부에 보이는 이름(주소), 즉 IP)
그럼 행복아파트 내에 있는 각각의 동들은 어떻게 호칭할 수 있을까. 아파트마다 각각의 동을 칭하는 방법은 다르겠지만 행복아파트에서는 101동, 102동 등으로 이를 구별한다. 내가 만약 101동에 사는 사람이라면, 내가 사는 곳은 '행복아파트 101동'이 될 것이다. 여기서 '101동'은 행복아파트 내의 동들을 구분짓는 고유한 이름으로 사설 IP의 형태를 띈다. (완전히 뾰족하게 대입되는 비유는 아니지만 이해에 도움이 되었으면 좋겠다)
공인 IP 주소는 인터넷상에서 사용되는 실제 IP이고, 사설 IP는 한 네트워크 상에서 사용되는 가상의 IP 형태이다.
사설 IP 주소는 192.168.x.x의 형태를 띈다.
세 번째, 유동 IP 주소(Dynamic IP Address)와 고정 IP 주소(Static IP Address)
유동 IP 주소와 고정 IP 주소도 IPv4 하에서 발생하는 주소 할당의 과부하를 제한하여 부족한 IP 주소를 효율적으로 사용하기 위해 만들어졌다. 고정 IP 주소는 내가 가진 IP 주소가 '나의 것'으로 고정되어 있는 주소이고, 유동 IP 주소는 내가 가진 IP 주소가 '일시적으로 나의 것'인 것이다.
쉽게 예를 들어서 우리 집에서 사용하는 컴퓨터가 11.12.13.14라는 IP 주소를 가지고 있다고 해보자. 고정 IP 주소에서는 이 IP는 나의 것이다. 내가 인터넷을 사용하지 않는다고 해서 IP 주소가 다른 사람에게 이전되거나 나에게 다른 IP 주소가 부여되지 않는다.
반대로 유동 IP 주소는 내가 사용하고 있는 11.12.13.14라는 IP 주소가 나의 것이 아니다. 잠시 빌려(?) 쓰고 있는 것으로 내가 일정기간동안 인터넷을 사용하지 않는다면 IP 주소가 다른 사람에게 이전된다. 그리고 내가 다시 인터넷을 사용할 때 새로운 IP 주소가 부여된다.
일반적으로 인터넷을 '사용'하는 상황에서는 유동 IP를 사용한다고 해서 인터넷 사용에 제한이 오지 않는다. 사용하는데는 전혀 지장이 없을테니까. 그런데 만약 내가 IP를 이용해서 서버를 구축한다고 하면 문제가 될 수 있다. 11.12.13.14라는 IP 주소로 서버를 만들어놨는데 이 IP가 다른 컴퓨터에게 이전되면 서버가 작동하지 않을 수 있기 때문이다.
유동 IP 주소를 고정 IP 주소로 바꾸기 위해서는 통신사에 전화해서 내 IP를 고정 IP로 만들어달라고 하면 된다. 몇 만원정도를 내면 해준다고 한다.
네 번째, DHCP가 무엇인가
DHCP는 Dynamic Host Configuration Protocol의 약자로 지하철이니 카페니 학교니 돌아다니면서 수시로 휴대폰의 네트워크를 바꿔야 하는 현대사회에서 매우 매우 중요한 프로토콜이다. DHCP는 쉽게 말해 기기가 네트워크에 처음 접속했을 때 "자동"으로 사설 IP 주소가 부여되는 프로토콜을 말한다.
예를 들어 유동인구가 매~~~~우 많은 강남의 스타벅스를 생각해보자. 스타벅스 안에는 늘 사람이 가득하다. 스타벅스에 가보면 노트북을 이용해서 과제나 업무를 보는 사람들을 쉽게 볼 수 있다(한 명 이상은 거의 무조건 있다). 스타벅스 와이파이를 사용해서 인스타그램을 보거나 게임을 하는 사람들도 쉽게 볼 수 있다. 사람들은 커피를 마시기 위해, 혹은 에어컨이 작동하는 공간 내에서 와이파이를 제공받기 위해 스타벅스 안으로 들어오기도 하고, 또 나가기도 한다.
자, 이런 조건에서 스타벅스 공유기는 상당히 많은 일을 해야만 할 것이다. 수시로 사람들이 들어오고 또 나가는 상황에서 스타벅스 공유기는 네트워크에 접근하는 사람들에게(정확하게는 기기들에게) 계속해서 IP 주소를 부여하고 갱신해야만 한다. 만약 이 과정이 자동화되지 않고 계속해서 사람의 손으로 처리해야 한다면 어떤 장면이 펼쳐질까.
어쩌면 스타벅스 내에 네트워크 업무를 처리하는 별도의 직원이 있을지도 모르겠다. 네트워크 직원이 앉아 있는 데스크 앞에는 와이파이를 이용하려는 사람들이 길게 줄을 서고 있을 것이다. 한 명씩, 한 명씩 차례대로 순서를 기다리다 자신의 차례가 되면 네트워크 직원에게 자신의 기기를 보여주고 IP 주소를 할당받는다. 그러면 그제서야, 와이파이를 이용할 수 있게 되는거다.
이런 상황이 모든 영역 전반에서 발생한다고 생각해보자. 와이파이 환경을 제공하는 모든 카페, 지하철, 관공서, 은행 등등. 사람이 몰리는 곳이면 어디든 네트워크 직원의 데스크 앞에는 길게 줄이 늘어서 있다. 어떤 사람은 와이파이를 이용하기 위해 30분 이상 줄을 설지도 모른다. DHCP는 이런 과정을 기계가 직접하여 기기가 네트워크에 빠르게 접근할 수 있도록 도와준다.
2. DATABASE1 복습
앞에서 너무 많은 시간을 써버려서 에너지가 동이 나 버렸다. DB는 정말 간략하게 정리하고 넘어가련다. 나중에 더 많이 공부하게 되고 알게되면 추가적인 포스팅을 하는 것이 좋을 것 같다.
음.. DB에 대해 알고 있는 지식들을 적어볼까.
데이터베이스는 스프레드시트(엑셀과 같은)처럼 정보를 규격(?)에 맞게 저장하면서도 스프레드시트와는 달리 컴퓨터언어로 조작이 가능한 형태를 말한다. 단순히 정보를 기록하는 형태가 file 형태라면 그곳에서 발전해여 정보를 체계적으로 정리할 수 있게 된 것이 스프레드시트, 그리고 거기에 컴퓨터언어를 사용함으로써 정보 처리를 자동화할 수 있게 만든 것이 데이터베이스 형태인 것이다.
데이터베이스는 크게 SQL형태와 Non-SQL형태로 나뉜다. SQL 형태의 대표적인 제품이 Oracle, MySQL 등이고 Non-SQL 형태의 대표적인 제품이 MongoDB이다.
데이터베이스는 1960년대에 SQL형태로 시작되었고 SQL은 현재까지도 데이터베이스와 동의어로 여겨질정도로 데이터베이스 내에서의 헤게모니를 쥐고 있다.
그러나 2010년에 들어 인터넷 사용량이 급격하게 증가함에 따라, 그리고 소셜미디어의 출현 등으로 비전문적인 정보들이 인터넷에 쏟아짐에 따라 상대적으로 유연하지 못한 SQL보다 Non-SQL을 사용하는 경향이 증가하고 있다. (but 2021년 데이터베이스 사용량에 따른 랭킹을 보면 여전히 데이터베이스의 헤게모니는 SQL이 쥐고 있다. 이는 많은 기업 및 관공서가 SQL을 사용하기 때문이다. 2021 데이터베이스 랭킹 : https://db-engines.com/en/ranking)
'Database' 카테고리의 다른 글
Three schema Architecture | 내부, 개념, 외부 스키마란? (0) | 2021.10.07 |
---|---|
[Relational Data Modeling] step 1. 개념적 데이터 모델링 (0) | 2021.10.02 |