[개발일지] 22년 27주차 - DOM과 서버리스

FeRo 페로·2022년 7월 10일
4

이번 주 회고

이번 주는 리액트 공부를 처음으로 했다. 첫 강의로 제로초님의 무료 리액트 강의를 들었다. 정말 설렜고 또 재밌었지만 초반 웹팩 관련 강의와 전체적으로 꼼꼼하게 가르쳐 주셨기 때문에 초심자로서 어려운 부분도 있었다. 그래도 강의를 다 본 지금 다시 생각해 보면 꼼꼼하게 가르쳐 주었기 때문에 누구보다 첫걸음을 단단하게 내디딘 것 같다. 사실 뒤쪽 부분인 틱택토와 지뢰찾기는 시간이 없어서 중요한 개념만 봤다. 그래서 다시 공부해야 하지만 그까지 배운 내용 가지고도 방대한 리액트를 세계를 시작하기에 충분했다. 덕분에 이후에 과제를 할 때도 코드가 왜 이렇게 되는지에 대한 생각을 한 번 더 해볼 수 있었고, 각 코드도 이유를 가지고 적어볼 수 있었다.

이번 주는 주중에 팀원들과 함께 프로그래밍과 관련된 다양한 주제로 발표를 하고 서로 생각을 나누는 시간이 있었다. 그 중에서 DOM과 서버리스에 관한 내용이 흥미로웠고 이번 주는 이에 대한 내용을 WIL로 써볼까 한다.

DOM

웹 개발을 하는 분들은 반드시 알아야 하는 것이 DOM이다. DOM은 Document Object Model의 약자로써 여기서 Document는 보통 HTML문서를 가리킨다. 즉 HTML을 객체화 한 모델이다. 이 객체는 Javascript와 같은 스크립팅 언어가 DOM 구조에 접근할 수 있는 방법을 제공하고, 이렇게 외부에서 접근할 수 있기 때문에 내용이나 스타일에 대한 변경을 할 수 있는 것이다.

DOM은 언제 생성될까?

우리가 HTML에 작성한 것을 브라우저의 렌더링 엔진이 분석을 한 후 태그들을 HTML5에 맞게 토큰화를 시킨다. 이렇게 토큰화를 시킨 태그들의 속성과 규칙을 정의한 노드 객체로 변환하고 각 노드가 연관성을 가지도록 트리를 생성하는데 이것이 DOM이다. 이렇게 파싱하는 과정에서 브라우저는 필요한 CSS와 JS문서들을 요청한다.

서버리스


이 단어를 처음 들었을 때 '서버 없이 서비스를 만드는 것인가?'하는 생각이 들었다. 하지만 찾아보니까 오히려 온프레미스(on-premise)의 상대되는 개념에 가까웠다. 쉽게 말하면 서버리스란 클라우드 서버를 사용하는 것이다. 즉 개발자가 서버를 관리할 필요 없이 어플리케이션을 빌드하고 실행할 수 있도록 하는 아키텍쳐이다. 내가 생각한 대로 서버가 없는 것이 아니라 서버가 존재하지만 추상화되어 있다고 할 수 있다.

서버리스 아키텍쳐에서는 클라우드 제공업체가 서버 인프라에 대한 프로비저닝, 유지 관리, 스케일링 등의 일상적인 작업들을 처리하며 사용자인 개발자는 배포를 위한 코드를 컨테이너에 패키징만 하면 된다. 서버리스 컴퓨팅 서비스는 BaaS와 Faas라는 두 가지 시스템으로 나뉜다. BaaS를 제공하는 업체는 Firebase, Amplify가 있고, FaaS를 제공하는 업체는 AWS Lambda, Azure Functions, Google Cloud가 있다.

BaaS(Backend as a Service)

보통 우리가 서비스를 만들 때 백엔드 서버 개발을 진행하게 되는데 서버 개발은 고려해야 할 부분들이 매우 많고 복잡하다. 특히나 보안적인 측면을 고려하다 보면 난이도는 훨씬 올라간다. 그래서 생긴 서비스가 Firebase같은 BaaS이다. 이 시스템에서는 개발에 필요한 다양한 기능들을 API로 제공해 주기 때문에 개발자들이 서버 개발을 직접하지 않고도 필요한 기능을 간편하게 구현할 수 있다. 또한 이용자가 순식간에 늘어나는 경우에도 따로 대비를 해주지 않아도 되기 때문에 안정적이다.

FaaS(Function as a Service)

FaaS는 프로젝트를 여러개의 함수로 쪼개서 준비해둔 함수를 서버리스 컴퓨팅 자원에 등록하고 이 함수들이 실행되는 횟수 만큼 비용을 해는 방식을 말한다. 이렇게 등록한 함수들은 특정 이벤트가 발생했을 때 실행이 되기 때문에 이벤트 기반 컴퓨팅 실행 모델이라고 한다. 특정 작업을 사용하기 위해 서버를 하루 종일 켜놓는 것이 아니라 필요할 때만 함수가 호출되어 처리되기 때문에 비용이 많이 절약된다. BaaS와 달리 FaaS는 사전 작성된 서비스 라이브러리에 의존하지 않고 개발자에게 더 많은 제어 권한을 제공한다는 장점도 있다.

[참고자료]
https://developer.mozilla.org/ko/docs/Web/API/Document_Object_Model/Introduction
https://www.redhat.com/ko/topics/cloud-native-apps/what-is-serverless
https://velopert.com/3543

profile
주먹펴고 일어서서 코딩해

0개의 댓글