본문 바로가기

프로젝트 회고 🌊

CS 스터디 발표 회고 1 - 비동기 처리, RESTful API

오늘 밤에는 약 일주일간 준비한 CS 관련 발표를 진행했고 다른 팀원들의 설명도 들으며 많은 것을 새롭게 알게 됬다. 

 

내가 진행한 발표는 실행컨텍스트스택, 싱글스레드, 콜백헬, 그리고 이것들의 대안인 Promise 객체와 async/await, fetch와 axios 차이에 관한 발표였다.

 

발표 자료 : https://nayoungkim00.tistory.com/43

 

 

자바스크립트의 비동기 처리 동작 원리 | 콜스택, 이벤트루프, Promise, fetch, async/await

목차 1. 비동기처리의 필요성 1-1. 실행컨텍스트 스택 1-2. 싱글스레드 2. 비동기처리의 동작 원리 2-1. 브라우저의 이벤트 루프 2-2. 왜 싱글스레드일까? 3. 콜백 비동기 처리의 문제점 3-1. 콜백 헬 (Ca

nayoungkim00.tistory.com

 

발표가 끝난 뒤 다른 팀원이 전역 컨텍스트에 어떤 정보가 저장되고 왜 가장 먼저 실행되는 과정이 필요한건지에 대한 질문을 했다. 내가 알고 있기로는 소스코드를 자바스크립트 엔진이 읽으면서 평가 과정을 거치게 되고, 이로서 이 소스코드에서 실행하는 전역 변수의 정보가 저장된다라는 정도였다. 우선 알고있는 점에 대해 말씀드렸지만, 자세히 아는 정보가 없어 발표 끝나고 다시 찾아보았다.

 

 

전역 실행 컨텍스트 (Global Execution Context)는 스크립트가 로드될 때 자동으로 단 한번만 생성되며 가장 최상위 레벨에 있는 전역 코드를 실행한다. 브라우저에서는 window 객체를 의미하며 전역 범위에서 선언된 함수와 변수를 포함한다. 또한 코드 어디서나 접근할 수 있다.. 왜 전역 실행 컨텍스트가 가장 처음 생겨나고 콜스택에서 코드 실행시점 ~ 종료시점까지 유지되는지에 대해 다시한번 생각해 볼 수 있었던 좋은 질문이었다.

 

 

그리고 두번째 질문은 fetch와 axios의 안정성 차이에 대한 질문이었는데, axios가 써드파티 라이브러리이고 fetch는 빌트인 메소드이기 때문에 에러 처리 이외에 다른 차이점이 있는지 여쭤보셨다. 현재 많은 개발자들이 axios를 사용하고 있기도 하고, 우리는 주특기가 리액트이기 때문에 앞으로 친숙해져야 할 라이브러리이기도 하다. 팀원들과 함께 안정성에 대해 검색을 많이 해봤지만 어디에도 명확하게 둘 중 어떤 것은 안정성이 떨어진다. 라는 말은 없었기 때문에 에러 처리나 브라우저 호환성, 그리고 제공하는 기능 등을 고려해 선택하는게 좋을 것이라는 답변을 드렸다. 

 

 

'안정성' '좋은 기능' 등의 모호한 표현은 개발자에게 좋지 않다는 생각이 들었다. 정확히 어떤 안정성에 기여하는지, 유용한 기능을 제공한다면 그에 반하는 단점은 무엇인지 구체적으로 생각해봐야 할 필요가 있었던 것이다. 

 

 

앞으로는 발표하는 모든 주제에 대해 더 깊게 이해한 후 충분한 예시와 함께 설명해야겠다는 생각이 들었다. 그리고 요즘은 어떤 메소드, 어떤 라이브러리 등이 개발자들 사이에서 잘 사용되는지 그리고 어떤면에서 안정적이고 편리한지에 관해서도 설명을 추가하려고 한다.

 

 

 

다른 팀원들이 발표한 주제는 RESTful API였다. 이전에는 fetch를 사용할 때 이미 정해진 도메인에 접근하다보니 URI 의 간결함과 정확성 등 REST를 잘 준수해야하는 이유에 대해 몰랐었는데, 이번 부트캠프에서 파이썬 flask 를 이용한 풀스택 미니 프로젝트를 개발하다보니 HTTP 요청과 메소드가 프론트 - 백의 소통에 얼마나 큰 기여를 하는지 알게 되었다. 프론트엔드와 백엔드가 소통할 수 있는 가장 큰 핵심 역할이며 이를 잘 수행하기 위해서는 구체적이고도 간결한 컬렉션과 고유 식별자 이름이 필요한 것이었다. 이를 위해서는 RESTful API가 원하는 데이터와 식별자, 메소드를 통한 동작까지 구체화할 수 있어 간결하고 편리하다고 생각한다.

 

어떤 팀원은 RESTful API의 단점도 조사했고 그에 대한 방안으로 GraphQL에 관한 언급을 했었다. 그 전에는 무조건적으로 RESTful API를 많이 사용하니까 당연히 좋겠지, 이게 최선의 방안인 거겠지라고 무의식적으로 생각했었던 것 같다. 조금은 비판적인 시선과 해결방안을 적극적으로 찾아보는 모습이 필요하다고 느꼈다.

 

 

 

첫 스터디 발표였는데 서로 준비한 지식을 공유하는게 재밌기도 했고 유익한 시간이었다 :) 다음 시간엔 스코프, 클로저, SSR SSG CSR에 대해 준비하고 발표하기로 했다!