02-2 웹사이트는 어떻게 만들어지나요?
웹 브라우저
웹 브라우저 (= 브라우저) 는 웹사이트를 열어 인터넷 서핑을 하는데 사용되는 소프트웨어를 뜻한다.
.docx 확장자의 문서는 MS 워드로 읽을 수 있고,
.psd 파일은 어도비 포토샵으로 열 수 있는 것처럼
.html 문서는 브라우저(ex. 크롬, 사파리 등)를 통해 읽을 수 있다.
즉, 우리가 이용하는 웹 페이지는 HTML을 읽어서 브라우저 화면에 나타난 결과이다.
웹사이트는 의미가 같은 웹 페이지 여러 개가 모여서 만들어진다.
ex. 이메일 사이트 <= 편지함 페이지, 보낸 편지함 페이지, 주소록 페이지 등의 결합
이러한 웹사이트를 구성하는 핵심 요소로는 HTML, CSS, 자바스크립트가 있다.
HTML
HTML (= HyperText Markup Language) 코드의 모습은 아래와 같다.
'<>' 안에 글자가 들어간 body, div, h1 같은 요소를 태그 라고 부른다.
HTML은 태그를 이용해 웹 페이지 화면에 놓일 요소를 배치하는 설계도 역할을 한다.
따라서 HTML은 프로그래밍 언어가 아닌 마크업 언어 로 분류된다.
(아래와 같이 대답 시 '사내 반영구 혼밥 쿠폰'을 손쉽게 취득할 수 있다고 한다..)
CSS
CSS (= Cascading Style Sheets) 는 HTML로 웹페이지의 요소들을 올려놓은 후
디자인 요소를 이용해 꾸며주는 언어를 뜻한다.
CSS는 마크업 언어가 실제로 표시되는 방법을 기술하는 스타일 언어(style sheet language) 이다.
(CSS 역시 프로그래밍 언어가 아니라는 점을 잊지 말자..)
자바스크립트
자바스크립트 는 웹 페이지에서 동적인 기능을 구현하는데 사용되는 프로그래밍 언어이다.
ex. 사용자의 클릭에 따라 각종 기능 수행, 그래픽 애니메이션, 드래그로 조작 가능한 지도 등
웹 표준
웹 표준 은 브라우저마다 HTML, CSS, 자바스크립트 코드를 실행하는 방식에 통일성을 주어
브라우저 문제로부터 자유롭게 웹사이트를 프로그래밍 하도록 하는 국제적인 권고 사항이다.
즉, HTML, CSS, 자바스크립트를 읽는 표준화된 방식을 뜻한다.
반응형 vs 적응형
같은 주소의 웹사이트라도 어떤 기기에서 여는지에 따라 보이는 모습이 다르다.
PC와 모바일 화면에 각각 적합한 모습으로 웹 페이지가 나타나게 하는 방법은 크게 두 가지이다.
1) 반응형 웹 : 요소들을 신축성 있게 만들어 기기나 화면 크기에 맞게 자동으로 조절하는 웹사이트
- 반응형 웹은 각 웹 페이지를 하나씩만 만들되, 콘텐츠들의 모습을 화면 크기에 따라
어떻게 바꿀지 CSS와 자바스크립트로 프로그래밍함 - 따라서 PC, 태블릿, 모바일 전용 웹 페이지를 따로 만들 필요가 없음
- 사이트 안의 내용이 많고 복잡한 구조일 때는 반응형 웹 구현보다
모바일용 웹 페이지를 따로 만드는 게 더 유용할 수도 있음
2) 적응형 웹 : 화면 크기에 따라 PC용과 모바일용으로 구분되어 만들어진 웹사이트
- 스마트폰 브라우저로 접속시 m.naver.com과 같이 m이 붙는것처럼 PC와는 다른 주소로 열리는 웹페이지를 뜻함
- 복잡한 사이트의 경우 환경에 맞게 최적화된 코드를 짤 수 있어 반응형보다 경제적인 선택지 일 수 있음
02-3 쿠키, 토큰, 캐시는 일상에서 쓰는 그 단어인가요?
쿠키
쿠키 는 브라우저(ex. 크롬, 사파리 등)에 저장되는 작은 텍스트 조각이다.
브라우저는 사용자의 컴퓨터에 설치된 소프트웨어이므로 쿠키는 사용자가 갖고 있는 정보이다.
다만 쿠키는 제 3자가 조회하는 것도 가능하기 때문에 개인 정보 등 민감 정보를 담기에는 적합하지 않다.
흔히 검색 기록, 웹 페이지 다크 모드 설정 여부 등의 간단한 정보를 담는 역할을 한다.
세션
세션 은 사용자의 로그인 정보를 기억하여 매 페이지마다 재인증 없이 사이트를 이용할 수 있도록 해주는 증서이다.
즉, 세션은 사용자가 사이트에 한 번 로그인하면 유효기간이 끝날 때까지 더 이상 아이디와 비밀번호를
입력하지 않아도 되도록 사용자가 이미 서버로부터 인증받았음을 증명해 주는 역할을 한다.
세션의 동작원리는 다음과 같다.
1. 사용자가 서버에 아이디, 비밀번호로 로그인에 성공하면 서버는 세션 아이디 데이터를 만든다.
ex. '2sjflekj33bm7'과 같은 식으로 알파벳과 숫자가 혼합된 형식
2. 서버는 세션 아이디를 사용자에게 전달하고, 메모리에도 세션 아이디 사본 정보를 보관한다.
3. 사용자는 세션 아이디를 쿠키로 저장한 다음 앞으로의 모든 요청에 함께 전달한다.
ex. 친구 목록 볼 때, 댓글 작성 및 삭제, 구매한 상품 내역 볼 때 등
4. 서버는 특정 요청을 받으면 그 요청에 세션 아이디가 적혀있는지 확인하고,
아이디가 있으면 보관 중인 세션 아이디 중에 동일한 정보가 있는지 대조하여 사용자를 파악하고
인증된 사용자라는 게 확인되면 요청 사항을 반환한다.
토큰
앞서 설명한 세션 방식은 비교적 안전하지만 세션 아이디를 생성 후 메모리에 저장해야 하기 때문에
공간의 효율성이 떨어지고, 동시 접속자수의 증가에 따른 서버 부하 등의 잠재적 문제점이 존재한다.
이에 대한 대안으로 메모리 공간을 차지하지 않는 토큰 방식이 고안되었다.
토큰 은 해당 서버만이 만들 수 있는 토큰을 발급함으로써 상태를 저장하지 않고도
사용자의 로그인 여부를 파악할 수 있도록 하는 인증 방식이다.
이러한 토큰은 한 번 발행이 되면 유효기간이 끝나기 전까지 따로 통제할 수 없기 때문에
다중기기 로그인 접속 제한 등 사용자의 상태를 원하는대로 통제하는 것이 불가능 하다.
캐시
캐시(cache) 는 데이터나 값을 미리 복사해 놓는 임시 장소를 뜻한다.
사용자가 PC나 스마트폰에서 받아온 데이터는 브라우저에 캐시 형태로 저장되기 때문에
같은 사이트를 방문하거나 동영상을 다시 시청할 때
추가적인 통신비를 지출하지 않고 로딩 없이 콘텐츠를 이용할 수 있다.
쿠키와 캐시는 모두 정보를 저장하여 재활용하는 기술이라는 공통점이 있지만,
쿠키는 사용자의 수고를 덜어주는 데 목적을 두고
캐시는 데이터의 전송량을 줄이고 서비스 이용 속도를 높이는 데 목적을 둔다.
CDN
CDN(= Content Delivery Network) 은 각지에 캐시 서버를 두어 부하를 분산시키는 기술을 뜻한다.
CDN을 이용하면 웹 콘텐츠를 사용자와 가까운 서버에서 전송해서 전달 속도를 높일 수 있다.
서버가 데이터를 전 세계의 CDN 업체가 보유한 캐시 저장 및 전달용 컴퓨터(= 캐시 서버)에 보내면
사용자는 본 서버가 아닌 본인에게서 가장 가까운 캐시 서버로 요청을 보내고 데이터를 받아오게 된다.
- 해외 CDN 업체 : AWS - CloudFront / CloudFlare, Akamai 등
- 국내 CDN 업체 : GS네오텍, SK브로드밴드, KT, LG유플러스, 네이버 클라우드 등
2-4 스마트폰 앱인데 웹사이트라고요?
네이티브 앱
네이티브 앱 개발은 윈도우, iOS 등 각각의 운영체제에 최적화된 앱을 개발하는 방법을 뜻한다.
1) 장점
- 각 스마트폰의 모든 기능을 사용할 수 있고, 성능을 최대치로 활용할 수 있음
ex. 카메라, GPS, 블루투스, 영상 편집 앱 등 성능을 최대치로 사용해야 하는 앱에 유리함
2) 단점
- 안드로이드, iOS 개발에 모두 능숙한 개발자가 필요함
- 같은 기능을 두 버전으로 구현하기 위해 소요되는 인력과 시간이 상당함
- 앱 업데이트시 서로 다른 심사기간으로 인해 운영에 차질을 빚을 수 있음
크로스 플랫폼
크로스 플랫폼 은 같은 소스 코드로 안드로이드 버전과 iOS 버전에서
모두 작동할 수 있는 앱을 만드는 개발도구를 뜻한다.
ex. 구글 - 플러터(다트), 페이스북 - 리액트 네이티브(자바스크립트), MS - 닷넷 마우이(C#) 등
1) 장점
- 네이티브 앱으로 제작하는 것보다 더 쉽고 적은 자원으로 제작 가능함
ex. 스케줄 관리 앱, 쇼핑 앱, 사진 보정 앱 등 스마트폰의 기본 기능을 활용하는 저성능 앱에 적합함
2) 단점
- 각 운영체제에 특화된 방식이 아니므로 네이티브 앱에 비해 성능을 100%로 끌어올리기 힘듦
- 앱 업데이트시 서로 다른 심사기간으로 인해 운영에 차질을 빚을 수 있음
웹 앱
웹 앱 은 스마트폰의 기종 및 기기에 상관없이 모든 단말기에서 같은 콘텐츠를 볼 수 있는 웹사이트를 뜻한다.
즉, 반응형 혹은 적응형 방식을 사용해서 모바일 기기에서 사용하기 적합한 형태로 만든 웹사이트이다.
1) 장점
- 안드로이드용, iOS용을 따로 구분하지 않고 웹 개발만으로 모바일용 앱 제작 가능함
- 앱 마켓 심사 과정이 없어서 비교적 간편하게 최신 버전으로 유지할 수 있음
- 웹 개발 기반이므로 플랫폼 제작 비용이 저렴하고 개발 기간도 짧은 편임
2) 단점
- 스마트폰에 설치된 브라우저 기반으로 작동하므로 웹 앱의 기능이 한정적임
- 브라우저를 열고 주소를 입력해야하는 번거로운 접속 과정을 거쳐야 함
하이브리드 앱
하이브리드 앱 은 '웹 앱 + 네이티브 앱 / 크로스 플랫폼' 방식의 장점을 더해 만들어진 앱을 뜻한다.
하이브리드 앱은 네이티브 또는 크로스 플랫폼 방식으로 앱을 만든 후
브라우저 역할을 하는 웹 뷰라는 요소를 만들어 웹 화면을 띄운다.
웹 뷰 는 지정된 주소로 접속해서 웹 앱 형태로 만들어진 웹사이트를 화면에 보여준다.
사용자는 웹 뷰를 통해 웹사이트로 만들어진 기능을 앱 기능처럼 사용한다.
웹사이트에서 제공할 수 없는 하드웨어 기능인 카메라, 푸시 알림 같은 기능은
네이티브 단에서 자체적으로 수행하도록 해서 웹 앱의 단점을 보완한다.
PWA
PWA (= Progressive Web Apps) 는 진보된 브라우저 기능을 활용해서
네이티브 앱처럼 다양한 편의 기능을 제공하는 웹 앱을 뜻한다.
PWA는 브라우저마다 기능 활용 정도가 다르다.
안드로이드 폰에서 크롬을 활용하면 다양한 PWA 기능을 활용할 수 있는 반면,
아이폰의 경우 사파리를 제외한 PWA 기능이 차단된 상태이며, 사파리는 그 기능이 제한적이다.
따라서 PWA는 모바일 앱을 대체하는 독립된 형태의 선택지로는 부상하지 못하고 있다.
2-5 웹의 보이는 곳과 보이지 않는 곳
프론트엔드
프론트엔드 는 웹사이트를 구성하는 부분 중 브라우저에서 작동하는 부분을 뜻한다.
프론트엔드는 브라우저, 즉 클라이언트 컴퓨터에서 작동하는 부분이므로
프론트엔드 개발자를 클라이언트 개발자라고 부르기도 한다.
프론트엔드 개발은 HTML, CSS, 자바스크립트를 통해 이루어진다.
백엔드
백엔드 는 브라우저가 요청하는 부분, 즉 서버에서 작동하는 부분을 뜻한다.
브라우저가 수행하는 프론트엔드 부분을 제외한 나머지 기능은
서버 단계인 백엔드에서 이루어지기 때문에 백엔드 개발자를 서버 개발자라고도 부른다.
백엔드에서는 주로 데이터 처리와 같이 눈에 보이지 않는 웹 사이트 요소들을 다룬다.
백엔드 개발은 자바, 파이썬, 자바스크립트, C#, PHP, 루비 등을 통해 이루어진다.
프레임워크
프레임 워크 는 백엔드 개발자들이 수월하게 개발할 수 있도록 도와주는 프로그램 제작 키트를 뜻한다.
라이브러리는 특정 기능을 수행하는 소프트웨어 조각이다.
개발자가 프로그램을 제작을 위해 '가져다 쓰면' 라이브러리,
무언가를 기반으로 그 위에 프로그램을 '만들면' 프레임워크로 생각할 수 있다.
백엔드 개발자는 프레임워크와 함께 사용되는 프로그래밍 언어를 익혀둬야 한다.
ex. PHP - 라라벨, 파이썬 - 장고 / 플라스크, 자바스크립트 - 익스프레스, C# - 닷넷 등
API
API (= Application Programming Interface) 는 프로그램 간의 소통을 위해 만들어진 신호 체계이다.
API는 한 주체가 다수의 주체에게 특정기능을 개방할 때도 사용된다.
ex. 공공 API - 날씨, 행정, 법률 등의 데이터
이처럼 공개된 API 사용법에 맞게 요청을 보내면 원하는 기능을 사용할 수 있다.
REST API (= REpresentational State Transfer API) 는 개발자 사이에서 보편적으로 공유되는 신호 체계를 뜻한다.
XML, JSON, YAML, AJAX
API를 사용해서 요청에 응답을 주고 받는 등 컴퓨터끼리 소통을 할 때
계층과 구조를 가진 정보를 텍스트로 표현할 수 있는 형식이 필요하다.
이 때 사용되는 형식이 XML과 JSON이다.
1) XML (= eXtensible Markup Language)
- HTML과 같이 마크업 언어로서 태그 사이에 정보가 들어 있는 형태로 구성됨
- 태그 안에 다른 태그를 다층적으로 포함함으로써 복합적인 정보를 정확히 전달할 수 있음
2) JSON (= JavaScript Object Notation)
- XML 방식에서 반복되는 텍스트가 많아 사람이 읽기에 가독성이 떨어지고
컴퓨터가 읽고 쓰는 속도도 느린 단점을 보완하여 고안된 형식 - 항목마다 따옴표를 붙이고, [ ] / { }를 이용하여 배열과 객체를 표현하는 방식임
- 문법 오류에 취약해서 따옴표나 괄호가 하나만 빠져도 읽을 수 없음
- 주석을 달 수 없음
3) YAML (= YAML ain't markup language)
- 정보 인식을 위해 줄바꿈과 들여쓰기가 필수임
- 주로 프로그램 간 정보 전달 목적이 아닌 설정 파일과 같이
개발자가 편리하게 읽고 작성하기 위한 용도로 사용됨 - 마크업 언어가 아님
4) AJAX (= Asynchronous JavaScript and XML)
- 정확히는 형식이 아니라, 자바스크립트를 이용해 서버와 브라우저가
데이터를 교환할 수 있는 통신 기능을 가능하게 해주는 기법을 뜻함 - 자바스크립트를 통해서 서버에 데이터를 비동기 방식으로 요청하는 것을 의미함
- 비동기 방식은 웹페이지를 리로드하지 않고 데이터를 불러오는 방식이므로
서버에 데이터를 요청한 상태와 별개로 프로그램이 계속 돌아감
DOM
돔 은 HTML 문서가 실체화된 API로 정의할 수 있다.
document에 getElementById와 같은 명령을 내릴 수 있는 것은 돔이 API이기 때문이다.
button에 addEventListener, h1에 innerText 적용하는 것도
돔이 각 요소마다 명령어로 기능을 부여할 수 있는 API이기 때문이다.
HTML 문서에서 태그의 포함 관계가 나무줄기와 같은 구조여서 이를 두고 돔 트리 라고 부르기도 한다.
우리가 브라우저에서 보는 웹사이트의 모습은 돔 트리가 시각화되어 나타난 결과물이다.
2-6 IP는 뭐고 HTTPS는 뭐죠?
IP 주소
IP(= Internet Protocol) 주소 는 PC나 스마트폰 등의 각 기기를 식별할 수 있는 특수한 번호를 뜻한다.
IP 주소는 기기 자체의 주소가 아니라 기기와 연결된 네트워크 끝 단의 주소이다.
따라서 지금 사용하고 있는 노트북의 네트워크를 변경하면 IP 주소도 바뀐다.
IP 주소는 IPv4 방식을 이용해서 0.0.0.0 ~ 255.255.255.255까지를 주소로 사용한다.
현재는 거의 무한 개에 가까운 IPv6 방식으로 갈아타려는 추세이다.
1) 공공 IP 주소
- 지구상 어느 것과도 중복되지 않는 고유 IP 주소
- 인터넷 서비스 제공업체에 의해 회사나 개인에게 부여됨
- 웹사이트 같은 서버를 찾기 위한 용도로 사용됨
- 외부에 공개된 주소이므로 검색 엔진에서 IP를 검색해 확인 가능함
2) 사설 IP 주소
- IPv4 방식의 공인 IP 주소가 부족해지면서 기기에 서로 다른 주소를 할당할 수 없어서 생긴 개념
- 공유기로 하나의 공인 IP 주소를 여러 기기가 함께 사용하도록 함
- 이 때 공인 IP를 공유한 기기에도 각각을 구분할 수 있는 주소를 할당하는데,
이때 쓰는 주소를 사설 IP 주소 (= 로컬 IP, 가상 IP) 라고 함
3) 고정 IP 주소
- IP 주소가 영구적으로 할당되어 변경되지 않는 주소
- 인터넷 사이트와 같이 변경하면 안되는 사용처(ex. 기업, 기관 등)나 기기에 주로 사용함
4) 유동 IP 주소
- 기기에 고정적으로 IP를 부여하지 않고 남아 있는 IP 주소를 골라 그때 그때 기기에 할당하는 방법
- 고정 IP 주소보다 저렴하고, 정기적으로 변동되기 때문에 보안 측면에서 유리함
- 일반적인 클라이언트 용도로 적합함
도메인과 DNS
도메인 은 IP 주소를 이름처럼 사용할 수 있는 것을 뜻한다.
도메인은 도메인 등록 대행업체를 통해 구입한다.
ex. 가비아, 후이즈 등
DNS (= Domain Name System) 는 도메인에 해당하는 IP 주소를 변환해서 경로를 안내해주는 역할을 한다.
사용자가 브라우저에 도메인(웹사이트 주소)을 입력하면
브라우저는 DNS에 요청을 보내 도메인에 해당하는 IP 주소를 찾아 접속할 수 있게 된다.
WWW, HTTP
URL 은 링크를 복사해서 붙여넣기 할 때 사용되는 텍스트를 뜻한다.
URL의 구성은 다음과 같다.
1) http : 통신 규약으로, 어떤 종류의 통신이 이뤄질 것인지 결정함
- 클라이언트의 요청과 서버의 응답으로 구성된 방식임
2) www (= World Wide Web) : 호스트명 / 이 자리에 mail, map, shopping 등 다른 호스트로 대체 가능
- 컴퓨터를 통해 전 세계 사람이 정보를 공유하고 소통할 수 있는 인터넷 공간을 뜻함
- 하이퍼텍스트를 지원해서 한 문서에서 다른 문서로 즉시 접근이 가능함
즉, 책이나 종이 신문처럼 전체 글자를 순서대로 읽지 않아도 비선형적으로 정보 접근이 가능함 - 인터넷에 제공되는 많은 서비스를 통합 접속하는 역할을 함
- 텍스트 문서, 그림, 음성 등 URL 형태인 인터넷 주소를 이용해서 하나의 문서로 관리 및 제공함
3) .com / co.kr / .edu 등으로 끝나는 주소 : 도메인
HTTPS
HTTP의 문제점은 요청과 응답 사이에 보안 장치 없이 데이터가 그대로 내보내진다는 것이다.
이러한 HTTP의 취약점을 보완하기 위해 만들어진 것이 HTTPS 이다.
HTTPS는 검색 엔진에서 HTTP보다 웹사이트 노출에 유리하다.
검색 엔진은 HTTPS로 제공되는 사이트에 우선순위를 부여하기 때문에
검색 엔진 최적화(= SEO) 에 중요한 요소이다.
HTTPS의 원리는 다음과 같다.
1. 도메인의 소유주는 CA라 불리는 인증기관 중 하나로부터 인증서를 발급받는다.
2. 이 인증서를 웹사이트에 적용하면 서버는 클라이언트가 접속할 때 먼저 인증서를 제시한다.
3. 브라우저는 신뢰받는 CA 목록과 그 인증서를 판별할 수 있는 장치로 인증서가 유효한지 확인한다.
4. 인증서가 확인된 웹사이트는 주소창에 자물쇠 표시로 HTTPS를 사용하는 곳임을 나타낸다.
5. 이후 클라이언트와 서버는 서로 약속된 방식을 통해 주고 받는 내용을 암호화하고 해독한다.
요청 메소드와 응답 코드
HTTP 통신에서 클라이언트와 서버는 각각 정보 교환을 할 때 메소드와 응답코드를 함께 보낸다.
요청 메소드 는 클라이언트가 서버에게 원하는 것을 짐작할 수 있게 해준다.
1) GET
- 서버에 HTML 등의 문서나 이미지, 각종 데이터를 요청함
- 브라우저에서 웹사이트에 접속할 때 보내는 요청임
- API에서도 서버로부터 데이터를 가져오기 위해 사용함
2) POST
- 서버에 새로 저장될 자료를 보냄
- 게시판이나 SNS에 새 게시물을 작성할 때 사용함
3) PUT
- 특정 데이터 전체를 새로 저장함
- 게시판의 게시물을 수정할 때 사용함
4) PATCH
- 특정 데이터를 일부만 수정함
- 게시물의 조회수나 '좋아요' 수를 올릴 때 등에 사용함
5) DELETE
- SNS 게시물 등 특정 데이터를 삭제함
6) OPTIONS
- 해당 URL이 어떤 메소드를 허용하는지 물어보기 위해 사용함
서버의 응답에는 세 자리 숫자 형식을 가진 응답 코드 가 찍힌다.
1) 1XX : 요청을 성공적으로 받았으며 서버가 해당 작업을 진행중임
2) 2XX : 요청을 성공적으로 받았으며 요청이 이루어졌음
- 200 : 요청이 성공적으로 처리됨 (가장 흔히 사용됨)
- 204 : 성공적으로 처리되었지만, 답장에 적어 보낼 내용은 없음
- 206 : 요청에서 지정한 대로, 일부 콘텐츠만 보냄
3) 3XX : 요청을 수행하기 위해서는 해당 요청을 다른 주소로 보내는 등 추가 조치가 필요함
자료의 위치가 변경되어 새 URL로 자동 이동시켜줄 때 사용함
4) 4XX : 클라이언트 요청에 문제가 있기 때문에 수행할 수 없음 (사용자 측 문제)
- 401 : Unauthorized, 로그인이 필요한 요청인데 로그인되어 있지 않음
- 403 : Forbidden, 로그인되어 있지만 요청을 보낼 권한이 없음
- 404 : Not Found, 요청에 해당하는 데이터가 없음, URL이 잘못됨
5) 5XX : 요청에는 문제가 없지만, 서버에 이상이 있어 응답할 수 없음 (서버 측 문제)
- 500 : 서버 내부에 오류 발생
- 502 : 서버 과부하 또는 기타 네트워크 문제로 통신이 제대로 되지 않음
'ACTIVITY > 혼공얄코 스터디' 카테고리의 다른 글
[혼공얄코] 03-3 ~ 03-6 타임머신을 타고 평행우주를 누비는 개발자 (0) | 2023.04.06 |
---|---|
[혼공얄코] 02-7 ~ 03-2 바이트는 뭐고 자료형은 왜 쓰나요? (0) | 2023.03.30 |
[혼공얄코] 01-1 ~ 02-1 서버는 뭐고 AWS는 뭔가요? (0) | 2023.03.18 |