항해99 3주차 회고록 WIL(Weekly I learned)
3주차 내용
- 1/24-1/27: 주특기 입문 - 리액트(React)
- 1/28-1/29: 주특기 숙련 - 리액트(React)
React(리액트) 입문 주차 회고
개인 과제
React(리액트) 숙련 주차 시작
드디어 말로만 듣던 리덕스, 파이어베이스를 이용하여 과제를 진행하는 숙련 주차가 시작되었다.
역시나 개인과제 및 팀과제를 진행해야 하는데, 개인과제가 CRUD다.... 내가 가장 힘들어하는 CRUD.. :(
우선 강의부터 듣는 것이 우선이라 생각하여 금-토 이틀 동안 강의를 들었고, 토요일 늦은 밤 부터 우선 뼈대를 잡기 시작했는데 참 이상한게 예전엔 부트스트랩으로 쉽게 만들었던 카드가 리액트로 하려니 괜히 어려운 기분이었다. 이번 과제는 뭔가 만만하지 않을 것 같지만 어차피 결국엔 해낼거니까.. 열심히 하자 화이팅!
배운것들
DOM
DOM(문서 객체 모델) 이란?
- DOM은 XML이나 HTML 문서에 접근하기 위한 일종의 인터페이스이다. 해당 객체 모델은 문서 내의 모든 요소를 정의하고, 각각의 요소에 접근하는 방법을 제공한다.
쉽게 다시 얘기하면, DOM은 HTML 단위 하나하나를 객체로 생각하는 모델이다. 예를 들면 'div'라는 객체는 텍스트 노드, 자식 노드 등등, 하위의 어떤 값을 가지고 있는데, 이런 구조를 트리 구조라고 한다.
(출처: TCP School)
서버리스
서버리스란?
- 클라우드 컴퓨팅의 모델 중 하나로 사용자가 서버를 직접 관리할 필요가 없는 모델을 의미한다.
- 이미 누군가가 구축해둔 서버의 일부분을 빌려서 쓸 수 있어 내가 인프라를 구축하거나 서버 스펙을 고민할 필요가 없다는 큰 장점이 있다. (필요한 서버를 필요한만큼만 빌려 쓰면 된다.)
- 장점
- 동적으로 서버의 자원을 할당하므로 자원을 효율적으로 사용할 수 있다.
- 사용자가 없다면 자원을 할당하지 않고 대기하다가 요청이 들어오면 그 때 자원을 할당해서 요청을 처리하고 다시 대기 상태로 들어가게 된다.
- 비용면에서 굉장히 경제적이다.
- 대기상태를 제외한 실제 사용 자원에 대해서만 청구가 된다.
- 서버를 고려하지 않고 서비스와 애플리케이셔만 집중이 가능하다.
- 서버를 클라우드 제공 기업에서 전적으로 관리하기 때문에 사용자는 스케일링, 업데이트, 보안 등 서버에 대해 일절 관리하거나 신경 쓸 필요가 없어진다.
- 단점
- Cold Start
- 서버가 항시 요청에 대기하고 있는게 아니다보니 IaaS나 PaaS등의 모델보단 느리다.
- 클라우드 제공 플랫폼에 심하게 종속적
- 기존 IaaS나 PaaS모델은 플랫폼을 바꾸는게 어렵지 않지만(예시 : AWS에서 Google Cloud로) 서버리스는 애플리케이션의 구조 자체를 바꾸기 때문에 다른 플랫폼으로 이전하는게 굉장히 힘들다.
- 긴 시간을 요하는 작업에 불리하다.
- 서버리스는 단순 작업(댓글 쓰기, 이메일 보내기 등)에는 적합하지만 긴 시간을 요하는 작업(동영상 업로드, 데이터 백업 등)에는 굉장히 비효율적이다. 서버리스는 함수가 1회 호출 될 때 사용할 수 있는 메모리 및 시간에 제한이 있기 때문이다. 작업이 끝나지 않은채로 해당 시간이 지나면 작업이 끝날때까지 일정 시간마다 계속 함수를 다시 호출하므로 굉장히 비효율적이다.
- 구분
- FaaS(Function as a Service)
- 함수를 서비스로 제공하는 서비스
- 사용자가 작성한 코드를 서버리스 제공자의 서버에 업로드하게 되면 해당 서버는 업로드한 코드를 함수 단위로 쪼개어 대기상태로 두게 된다. 그러다 요청이 들어오면 서버가 대기상태에 두었던 함수를 실행시켜 처리한 다음 작업이 끝나면 다시 대기상태로 만드는 구조이다. 비용은 함수 호출 횟수에 따라 청구된다.
- BaaS(Backend as a Service)
- 백엔드 개발에 필요한 여러 기능을 API로 제공하는 서비스
- SNS연동이나 DB와 같이 백엔드에 필요한 기능들을 사용자가 직접 구현 할 필요 없이 제공하는 API로 해당 기능을 구현할 수 있게 해준다. 클라우드 공급자가 백엔드 개발 환경까지 제공해 준다고 보면 된다.
(출처: https://tibetsandfox.tistory.com/4)
개선이 필요한 부분
- 알고리즘 문제
- 아무래도 과제를 하루종일 하거나 강의를 듣다 보니 시간적인 여유가 나지 않아 이번주에 단 한개도 풀지 못했다... 뭔가 pressure를 가질 수 있도록 나 자신에게 더 엄격해져야 겠다.
- 구조를 잘 생각해보자
- 위에 변수 선언을 했다면 그게 밑에 어떤 곳과 연결되어야 하는지 잘 못 찾는 경우가 많은데, 좀 더 차분하게 면밀하게 코드를 들여다 보면 알 수 있다.
앞으로의 방향
- 2/3 21시까지 개인과제, 팀과제 제출
- 리덕스, 파이어베이스 제대로 사용해보기
- 알고리즘 문제 하루에 2개씩 풀기(나중에 준비하려면 늦는다. 무조건 부트캠프 기간 내에 계속 해야한다.)