처음 배우는 개념인 components, props와 state에 대한 개념을 이해하고 사용하는데 집중했고 리액트가 처음이라 이해하는데 조금 어려움이 있었지만 조금의 시간을 더 써서 개념과 구조, 사용방법에 대해 익혔다.
Document Object Model의 약자로 문서 객체 모델을 의미한다. HTML이나 XML 문서들을 JS언어로 조작할 수 있도록 되어 있는 모델을 의미한다.
리액트에서 사용하는 DOM은 가상(Virtual) DOM인데 이렇게 사용하는 이유는 실제 DOM에서는 브라우저가 화면을 그리는데 필요한 모든 정보가 들어있기 때문에 실제DOM을 조작하는 작업이 무겁기 때문이다. 그래서 리액트에서 가상 DOM을 만들어 관리하는 것이다.
가상DOM이란 우리가 가상적으로 UI를 저장해두었다가 실제 DOM과 연동시켜주는 프로그래밍 컨셉이다.
개발자가 서버를 관리할 필요 없이 애플리케이션을 빌드하고 실행할 수 있도록 하는 클라우드 네이티브 개발 모델. 서버리스에도 서버가 존재하긴 하지만 추상화되어있다. 클라우드 제공업체가 서버 인프라에 대한 프로비저닝, 유지관리, 스케일링 등의 일상적인 작업을 처리하며, 개발자는 배포를 위해 코드를 컨테이너에 패키징하기만 하면 된다.
BaaS(Backend as a Service)(Function as a Service)
보통 우리가 모바일이나 웹 어플리케이션을 만들게 될 때, 백엔드 서버 개발을 진행하게 된다. 서버 개발을 하다보면 고려할 사항이 꽤 많다. 대표적으로 유저가 늘어나게 되면 서버의 확장도 고려해야 하고, 보안성도 고려해야 한다. 그래서 탄생한 서비스가 Firebase 같은 BaaS 이다.
이 서비스에서는 앱 개발에 있어서 필요한 다양한 기능들 (데이터베이스, 소셜서비스 연동, 파일 시스템 등)을 API로 제공해 줌으로서, 개발자들이 서버 개발을 하지 않고서도 필요한 기능을 쉽고 빠르게 구현 할 수 있게 해주고, 비용은 사용 한 만큼 나가게 된다. 서버의 이용자가 순식간에 늘어나게 되어도 따로 대비를 안해줘도 알아서 확장이 된다.
프로젝트를 여러개의 함수로 쪼개서 매우 거대하고 분산된 컴퓨팅 자원에 준비해둔 함수를 등록하고, 이 함수들이 실행되는 횟수, 시간만큼 비용을 내는 방식이다.
우리가 등록한 함수는 특정 이벤트가 발생했을때 실행된다. 주기적으로 실행되게 설정할 수 있다. 크롤링 작업시에도 용이하다. 웹 요청을 처리할 수도 있다. 또한 콘솔을 통해 직접 호출할 수도 있다.