Weekly I Learn (DOM, 서버리스)
1. DOM이란 무엇인가.
DOM : Document Object Model
- DOM이란 브라우저가 HTML 웹페이지를 계층화하는 트리구조로 인식하는 객체 모델이다.
- 여기서 객체화란 순서에 따라 의미를 부여하는 것이다. 아래 그림 참조.
- DOM은 이렇게 TREE 형식의 자료 구조를 갖는다. 말하자면 가계도와 같은 느낌.
- 먼저, 하나의 root(뿌리) node에서 시작된다.
- tree에서는 위쪽의 노드를 부모(parent) 노드, 아랫쪽 노드를 자식(child) 노드라고 한다.
- root node는 가장 위에서 시작되는 node이니까 parent(부모)가 없는 node가 되고, 이를 뿌리(root) node 라고도 부른다.
- 반대로, children(자식)이 없는 node를 잎(leaf) node라고도 한다. 뿌리(root)에서 시작해서 잎(leaf)에서 끝나는 것!
Node란 tree 구조에서 root 노드를 포함한 모든 개개의 개체를 node라고 표현한다.
head, body, title, script, h1, HEADER-1 등의 태그뿐 아니라 태그 안의 텍스트나 속성 등도 모두 node에 속한다.
- 이러한 이유로 아래와 같이 Javascript가 DOM을 통해 HTML에 접근할 수 있게 되는 것이다.
document.getElementByTag("h1")
2.서버리스
- 서버리스는 무엇인가.
- Sever+Less라는 말 때문에 서버가 없는 백엔드라고 이해할 수 있지만, 그것은 불가능한 이야기다. 최소한 코드가 저장되어있는 곳이 있기 때문에 서버는 존재하다.
- 그렇기 때문에 서버리스는 서버가 없는 것이 아니라, 서버를 직접 관리하지 않는다는 뜻이다.
- 서버리는 왜 탄생했는가.
- 과거에는 직접 서버를 사서 물리적 공간을 차지하며 가동을 위해서는 전기가 필요한 시기가 있었다. 말그대로 수동으로 진행되던 시기였다.
- 그러던 중, 아마존이 등장하여 EC2를 선보이고 실제 서버를 사서 두는 대신 아마존이 관리해주는 서버를 살 수 있게 된 것이다.
- 서버리스의 장점
- 서버리스가 아닌 경우에는 서버가 24/7 돌아가고 있다. 언제나 요청에 응답할 준비를 하고 있는 것이다.
- 하지만 서버리스는 백엔드를 작은 함수 단위로 쪼개어 그 함수를 서버에 올리게 되는데, 리퀘스트가 올 때 그 함수가 실행되었다가 다시 수면 상태로 돌아가게 된다.
- 이렇게 됨으로써, 서버의 비용이 혁명적으로 저렴해 진것이다.
이전에는 유저가 0명이든 100명이든 같은 비용을 지불 했다면, 지금은 함수가 실행되는 만큼만 비용을 지불하면 되는 것이다. (1백만개의 함수 수행 = 20센트)
- 서버리스의 단점
- 첫번째 서버리스의 단점은 'cold start'이다.
- 우리가 서버에 올려놓은 함수는 리퀘스트가 있기 전까지는 쉬고 있는 상태이기 때문에, 리퀘스트가 왔을 시 그것을 수행하는데 시간이 필요하다는 것이다. (1밀리세컨드정도)
- 두번째 단점은 해당서버에만 너무 의존하게 된다는 것이다. AWS의 서버를 이용하게 되면 그 서버만 이용하게 되기 때문에, 다른 서버리스의 서비스를 이용하는것이 간단하지 않다는 것이다.
- 사용시 유의할 사항.
- 사이드 프로젝트를 수행 할 때 도움이 될 것이다. 설정을 신경쓰지 않고 코드에만 집중할 수 있기 때문이다.
- 또한 자신이 운영하고자 하는 서비스에 따라 서버리스가 좋을 수도 나쁠 수도 있기 때문에 신중한 고민이 필요해보인다.