위의 그림은 WC3의 DOM 표준 객체 모델입니다. DOM의 구조는 노드 트리고 표현되며
하나의 부모 줄기가 여러 개의 자식을 가지는 구조로 이루어져 있습니다.
또한, DOM은 HTML 문서로 생성되지만 꼭 일치하는 것은 아닙니다.
HTML : 화면에 보이고자 하는 모양과 구조를 문서로 만든 것으로 단순 텍스트로 구성
(최초에 화면을 그릴때 사용하는 설계도)
DOM : HTML 문서의 내용과 구조가 객체 모델로 변화되어 다양한 프로그램에서 사용됨
(설계도를 이용하여 실제로 화면에 나타내지는 인터페이스)
DOM은 브라우저에서 보이는 것이 아닙니다.
브라우저 보이는 것은 렌더 트리로 DOM과 CSSOM의 조합입니다.
렌더 트리에는 렌더링 되는 요소만 관련이 있고 스크린에 그려지는 것으로 구성되어 있습니다.
렌더 트리는 보이지 않는 요소들은 제외되기 때문에 DOM과는 다릅니다.
(DOM은 보이지 않는 요소를 포함하고 렌더 트리는 제외합니다.)
DOM은 개발도구에서 보이는 것이 아닙니다.
개발도구의 요소 검사기에 보이는 것이 DOM과 가장 비슷한 모습을 보이지만
개발도구의 요소 검사기는 DOM이 가지고 있지 않은 정보를 가지고 있습니다.
::befor, ::after의 선택한 가상 요소가 렌더 트리를 구성하는 요소 중 하나이지만,
DOM은 HTML문서로부터 빌드됩니다.
서버리스는 클라우드 컴퓨팅의 모델 중 하나로 사용자가 서버를 직접 관리할 필요가 없는 모델을 의미합니다.
FaaS는 Function, 즉 함수를 서비스로 제공합니다.
사용자가 작성한 코드(백엔드)를 서버리스 제공자의 서버에 업로드하게 되면 해당 서버는 업로드한 코드를 함수 단위로 쪼개어 대기상태로 두게 됩니다. 그러다 요청이 들어오면 서버가 대기상태에 두었던 함수를 실행시켜 처리한 다음 작업이 끝나면 다시 대기상태로 만드는 구조입니다. 비용은 함수 호출 횟수에 따라 청구됩니다.
쉽게 말하자면 업로드한 코드가 평상시에는 쿨쿨 자고있고, 요청이 들어오면 서버가 코드를 깨워 일을 시킨 후 다시 재운다..정도로 이해하시면 될 것 같습니다.
대표 서비스 : AWS Lambda, MS Azure Function
BaaS는 백엔드 개발에 필요한 여러 기능을 API로 제공하는 서비스입니다.
쉽게 말하자면 SNS연동이나 DB와 같이 백엔드에 필요한 기능들을 사용자가 직접 구현 할 필요 없이 제공하는 API로 해당 기능을 구현할 수 있게 해 주는 것입니다. 클라우드 공급자가 백엔드 개발 환경까지 제공해 준다고 보시면 될 것 같습니다.
대표 서비스 : Firebase
즉, FaaS와 BaaS의 차이는 직접 백엔드를 구현했느냐 아니냐의 차이 정도로 보시면 됩니다.
서버리스는 사이드 프로젝트(토이 프로젝트)나 최대한 빠르게 시제품(초기 서비스)을 런칭하고 싶은 경우에 추천드립니다. 이런 경우 기존 클라우드 컴퓨팅 모델에 비해 돈과 시간을 모두 절약할 수 있으므로 서버리스가 좋은 선택이 될 수 있습니다.