개발자 정다운입니다.
VENDIT에서 제품을 만들고, 기술로 사람들을 자유롭게 하는 일에 관심을 갖고 있습니다.
전체보기
분류별로 보기
벌써 2023년을 마무리하는 시기가 도래한 사실이 아직도 어색하기만 하다.
지난 회고 에서는 벤디트로 이직 후의 1년을 되돌아보다보니, 22-23년을 걸쳐 회고하게 되었었는데, 이제 1년 단위로 다시 한 해를 반추해봐야겠다.
Events
Concierge Product Release
올해 초, 컨시어지 제품의 개발에 갑작스레 참여하게 되어 제품의 백엔드를 맡아 만들게 됐다. 한 제품의 온전한 뒷단을 맡은 건 처음이었지만 많은 도움들 덕에 다행히 프로덕트가 릴리즈 될 수 있었다.
린 고객 개발에서 말하는 유효한 비즈니스 모델을 위한 조사 방식
하지만 전달된 제품이 고객의 가려운 부분을 긁어주기엔 기획단계에서부터 엉성한 부분이 많았던 제품이 아니었나 싶다. 제품을 만드는 과정에서 개발자분의 리텐션이 떨어져 떠나보내게 되는 결과를 낳기도 하였고, 힘겹게 출시하였음에도 실제 제품을 통해 매출이 발생하는 건은 손에 꼽았었을 정도(현재는 다행히도 활용하는 고객이 나타나서 이슈를 가끔씩 처리하곤 한다.. 🥹)로 아쉬움이 많이 남는 프로덕트다.
Working As Squad(6 Sprints & 1 Kanban)
이전 직장에서부터 스쿼드로 애자일하게 일하고 싶다는 열망을 가졌었던 나에게 벤디트에서 조직 변경은 무척이나 임팩트가 있던 사건이다. 그러나 진정한 스쿼드로 일하기 위해서는 많은 요소들이 갖춰져야 했다.
스쿼드 구성하기
팀 변경 시점에 프로덕트 팀은 두 개의 스쿼드로 분리하기로 결정했다. 당시 프로덕트 팀의 조직 구성은 다음과 같았다.
풀스택 3명 / 백엔드 1명 / 프론트 2명 / 디자이너 1명 / PM 1명
디자이너와 PM이 각각 1명씩 뿐이었기 때문에 두 스쿼드에서는 개발자가 PM 역할을 맡기도 했고, 프론트엔드 엔지니어가 디자인을 담당하기도 했다. 이는 한 명이 여러 역할을 수행하는 어려움을 야기했다.
2023 Review
커리어
실행컨텍스트?
많이 들어도 봤고 책에서도 읽었지만 볼때마다 졸음이 쏟아지는 내용.
실행컨텍스트의 내용은 사실 자바스크립트의 런타임환경을 이해하기 위해서는 필수적인 부분이기 때문에 쉽사리 넘어갈 수 없으며, 사실 자바스크립트를 사용하는 개발자들이라면 이미 은연중에 실행컨텍스트의 개념을 잘 이해할 수 있는 바탕을 갖고 있다고 볼 수 있다.
실행 컨텍스트(Execution Context)는 scope, hoisting, this, function, closure 등의 동작원리를 담고 있는 자바스크립트의 핵심원리이다. 실행 컨텍스트를 바로 이해하지 못하면 코드 독해가 어려워지며 디버깅도 매우 곤란해 질 것이다. - https://poiemaweb.com/js-execution-context 중에서
ECMAScript 스펙에 따르면 실행 컨텍스트를 실행 가능한 코드를 형상화하고 구분하는 추상적인 개념
이라고 정의한다. 좀 더 쉽게 말하자면 실행 컨텍스트는 실행 가능한 코드가 실행되기 위해 필요한 환경
이라고 말할 수 있겠다. 여기서 말하는 실행 가능한 코드는 아래와 같다.
•
전역 코드 : 전역 영역에 존재하는 코드
•
•
함수 코드 : 함수 내에 존재하는 코드
•
모듈 코드: 독립적인 모듈 스코프 내에 존재하는 코드
위 코드를 실행하면 아래와 같이 실행 컨텍스트 스택이 생성되고 소멸한다. 현재 실행중인 컨텍스트에서 이 컨텍스트와 관련 없는 코드(예를 들어 다른 함수)가 실행되면 새로운 컨텍스트가 생성된다. 이 컨텍스트는 스택에 쌓이게 되고 컨트롤(제어권)이 이동한다.
논리적 스택 구조를 가지는 실행컨텍스트 스택
1.
컨트롤이 실행 가능한 코드로 이동하면 논리적 스택 구조를 가지는 새로운 실행 컨텍스트 스택이 생성된다. 스택은 LIFO(Last In First Out)의 구조를 가지는 나열 구조다.
실행컨텍스트 톺아보기
개발
Yarn Berry란?
Yarn Berry는 Node.js의 새로운 패키지 관리 시스템으로, Yarn v1의 주요 개발자인 Maël Nison 씨가 만들었습니다. 2020년 1월 25일 정식버전(v2)이 출시되어, 현재는 Babel 과 같은 큰 오픈소스 레포지토리에서도 채택하고 있습니다. Yanr Berry는 GitHub yarnpkg/berry 레포지토리에서 소스코드가 관리되고 있습니다.
Yarn Berry는 기존의 “깨져 있는” NPM 패키지 관리 시스템을 혁신적으로 개선합니다.
NPM 뭐가 문제야?
NPM은 Node.js 설치 시에 기본으로 제공되어 범용적으로 사용되고 있으나, 비효율적이거나 깨져 있는 부부이 많습니다.
비효율적인 의존성 검색
NPM은 파일 시스템을 이용하여 의존성을 관리합니다. 익숙한 node_modules 폴더를 이용하는 것이 특징인데요. 이렇게 관리했을 때 의존성 검색은 비효율적으로 동작합니다.
예를 들어, /Users/toss/dev/toss-frontend-libraries 폴더에서 require() 문을 이용하여 react 패키지를 불러오는 상황을 가정합시다.
라이브러리를 찾기 위해 순회하는 디렉토리의 목록을 확인하려고 할 때, Node.js에서 제공하는 require.resolve.paths() 함수를 사용할 수 있습니다. 이 함수는 NPM이 검색하는 디렉토리의 목록을 반환합니다.
목록에서 확인할 수 있는 것처럼, NPM은 패키지를 찾기 위해서 계속 상위 디렉토리의 node_modules 폴더를 탐색합니다. 따라서 패키지를 바로 찾지 못할수록 readdir, stat과 같은 느린 I/O 호출이 반복됩니다. 경우에 따라서는 I/O 호출이 중간에 실패하기도 합니다.
TypeScript 4.0까지는 node_modules를 이용한 패키지 탐색이 너무 비효율적인 나머지, 패키지를 처음으로 import 하기 전까지는 node_modules 내부의 타입 정보를 찾아보지 않기도 했습니다. (TS 4.0 Changelog)
환경에 따라 달라지는 동작
Yarn Berry, 정녕 node_modules의 구원자인가?
개발
IndexedDB란?
IndexedDB 는 파일이나 블롭 등 많은 양의 구조화된 데이터를 클라이언트에 저장하기 위한 로우 레벨 API입니다.
•
트랜잭션을 사용하는 데이터베이스 시스템
•
JavaScript 기반의 객체지향 데이터베이스
•
인덱스 키를 사용해 저장하고 회수
•
구조화된 복사 알고리즘을 지원
IndexedDB 사용하기
기본패턴
1.
데이터베이스 열기
2.
객체 저장소(Object) 생성
3.
Transaction 시작하고, 데이터 추가 or 읽기 작업 요청
4.
DOM 이벤트 리스너를 사용하여 요청 완료때까지 기다리기
5.
결과로 작업하기
웹이 제공해주는 IndexedDB 알아보기
개발