대규모 리액트 웹 앱 개발 - 애디 오스마니|하산 지르데(Hassan Djirdeh) 지음
대규모 리액트 웹 앱 개발

저자 : 애디 오스마니 , 하산 지르데(Hassan Djirdeh) 번역 : 김모세

발행일 : 2025년 02월 07일 출간

분류 : 컴퓨터/IT > 웹프로그래밍 > 웹프로그래밍일반 KDC : 총류(000)

정가 : 28,000원

출판사
출판사연락처
출판사 주소
쪽수
388
ISBN
9791193926970
크기
188 * 245 * 19 mm

도서분류

컴퓨터/IT > 웹프로그래밍 > 웹프로그래밍일반
컴퓨터/IT > 웹프로그래밍 > JavaScript

도서소개

거대 괴수가 되어버린 자바스크립트 웹 개발로부터 살아남는 방법 오늘날 대규모 웹 앱 개발의 어려움을 극복하기 위해서는 알아야 할 게 많다. 이 책은 모던 웹 개발의 핵심 개념 및 최신 도구와 기술을 소개하고 이에 맞춰 리액트를 활용하는 법을 다룬다. 전반부에서는 복잡성, 디자인 시스템, 데이터 페칭, 상태 관리, 국제화, 코드 조직화 같은 핵심 개념을 살펴본다. 후반부는 개인화, A/B 테스팅, 웹 아키텍처, 테스팅, 기술 마이그레이션, 타입스크립트 등 세부 영역을 좀 더 자세히 설명한다. 확장 및 유지보수가 가능한 대규모 시스템을 구축하는 데 도움이 되는 통찰을 얻을 수 있다.

추천사

이선협, 코발트 전 CTO 오늘날 웹이 점차 발전함에 따라 프런트엔드 개발자는 단순히 데이터를 보여주고 아름답게 꾸미는 것을 넘어 수많은 요구사항을 처리해야 하는 ‘대규모 웹 앱’을 만들게 됐습니다. 처음 대규모 웹 앱을 마주한 개발자는 무엇을 알아야 하는지, 어떤 것이 정답인지 알 수 없어 혼란에 빠집니다. 왜 이런 일이 발생했을까요? 소프트웨어 설계와 관련된 자료에선 ‘은탄환은 없다’라는 표현을 자주 볼 수 있습니다. 이 말을 풀어서 써보자면 모든 상황에 딱 맞는 정답은 없으며 특정 상황에 맞는 정답을 찾아야 한다는 뜻입니다. ‘대규모 웹 앱’은 수많은 요구사항이 존재하며 이에 따라 엄청난 복잡성을 가집니다. 이 복잡성을 해결하기 위해서 상황과 조건, 요구사항에 맞는 정답을 스스로 찾아나가야 합니다. 소크라테스는 ‘모른다는 것을 아는 것이 중요하다’라고 했습니다. 하지만 수많은 정보가 쏟아지고 정답을 클릭 한 번에 찾을 수 있는 현대사회에선 정답을 찾아나가는 방법에 익숙하지 않은 경우가 많습니다. 《대규모 리액트 웹 앱 개발》은 ‘정답’을 알려주는 것이 아니라 ‘대규모 웹 앱’을 만들기 위해 ‘정답을 찾아가는 방법’을 알려줍니다. 이 책을 읽을 때는 단순히 읽고 넘어가는 것이 아니라 상황을 상상하고, 문제를 어떻게 해결할지 고민해보며 읽어보시길 바랍니다. 그렇게 하면 이 책은 앞으로 여러분이 대규모 웹 앱을 마주할 때 든든한 밑거름이 되어줄 것입니다.

상세이미지


저자소개

저자 애디 오스마니 구글 크롬을 개발하는 엔지니어링 리더. 크롬 개발자 경험 조직을 이끌며, 개발자들이 훌륭한 사용자 경험을 구축할 수 있게 돕고 있다. 웹 앱 구축 및 최적화 저서를 여럿 썼으며, 국내 번역된 책으로는 《자바스크립트 + 리액트 디자인 패턴》(한빛미디어, 2024) 등이 있다. 무엇이 1등 팀을 만드는가? 자바스크립트 + 리액트 디자인 패턴 저자 하산 지르데(Hassan Djirdeh) 다양한 웹 기술/프레임워크에 능숙한 소프트웨어 엔지니어. 리액트, 그래프QL, 타입스크립트 등에 특히 정통하며, 2019년에는 캐나다의 젊은 개발자 30인에 선정되었다. Doordash, Instacart, Shopify 등에서 대규모 프로덕션 애플리케이션 구축에 참여했다. 역자 김모세 대학 졸업 후 소프트웨어 엔지니어, 소프트웨어 품질 엔지니어, 애자일 코치 등 다양한 부문에서 소프트웨어 개발에 참여했다. 재미있는 일, 나와 조직이 성장하고 성과를 내도록 돕는 일에 보람을 느껴 2019년부터 번역을 시작했다. 저서로 《코드 품질 시각화의 정석》(지앤선)이 있고, 옮긴 책은 《파이썬과 자바스크립트로 배우는 OpenAI 프로그래밍》(제이펍), 《시작! AWS》(한빛미디어), 《문제풀이로 완성하는 알고리즘+자료구조》(위키북스), 《React 18 디자인 패턴과 베스트 프랙티스 4/e》(에이콘출판사) 등 다수다. React 18 디자인 패턴과 베스트 프랙티스 4/e 시작! AWS: 사전처럼 찾아보는 16가지 기본 서비스와 77가지 실무 활용 서비스 문제풀이로 완성하는 알고리즘+자료구조 블렌더로 애니 그림체 캐릭터를 만들어보자!: 카툰 렌더링편 비즈니스를 성공으로 이끄는 데이터 활용 파이썬과 자바스크립트로 배우는 OpenAI 프로그래밍 블렌더로 애니 그림체 캐릭터를 만들어보자!: 모델링편 AWS 시스템 개발 스킬업 데브옵스 핸드북 업무에 활용하는 Node.js

목차

옮긴이 머리말 x 베타리더 후기 xii 머리말 xiv CHAPTER 1 시작하며 1 CHAPTER 2 소프트웨어 복잡성 관리하기 6 2.1 복잡성 설명하기 8 2.2 복잡성의 근본 원인 파악하기 9 2.3 소프트웨어 설계 철학 11 2.4 타르 웅덩이 밖으로 12 2.5 단순함이 쉬움을 만든다 13 2.6 은탄환은 없다 14 2.7 시스템 디자인과 아키텍처 복잡성의 비용 15 2.8 팀은 어떻게 복잡성을 관리할 수 있는가? 17 2.9 최고의 해결책은 단순하지만 간단하지 않다 18 2.10 때때로 (필수적인) 복잡성은 다른 어딘가에는 살아남아야 한다 19 2.11 복잡성을 관리하는 데 지속되는 어려움은 무엇인가? 20 2.12 결론 21 2.13 더 읽을 거리 21 CHAPTER 3 모듈성 23 3.1 자바스크립트에서의 모듈 24 3.2 지연 로딩 32 3.3 코드 분할 37 3.4 정리 41 CHAPTER 4 성능 42 4.1 브라우저는 어떻게 작동하는가? 43 4.2 자바스크립트에서의 비용 이해하기와 줄이기 47 4.3 상호작용 최적화 50 4.4 네트워킹 50 4.5 서드파티 의존성의 영향 줄이기 51 4.6 렌더링 패턴 54 4.7 인지된 성능 최적화하기 55 4.8 성능 최적화 자료 58 4.9 성능 문화 61 CHAPTER 5 디자인 시스템 63 5.1 코딩 스타일 가이드 64 5.2 디자인 토큰 66 5.3 컴포넌트 라이브러리 71 5.4 접근성 74 5.5 성능 76 5.6 문서화 77 5.7 케이스 스터디 78 5.8 정리 82 CHAPTER 6 데이터 가져오기 83 6.1 브라우저 API와 간단한 HTTP 클라이언트 83 6.2 보다 세련된 데이터 가져오기 라이브러리 85 6.3 캐시 업데이트하기 92 6.4 효율적인 데이터 가져오기를 위한 팁 100 CHAPTER 7 상태 관리 106 7.1 컴포넌트 간 데이터 관리하기 107 7.2 prop 내려보내기 110 7.3 단순한 상태 관리 113 7.4 상태 관리 전용 라이브러리 115 7.5 마지막 고려 사항 120 CHAPTER 8 국제화 122 8.1 코드에서 텍스트와 콘텐츠를 분리하라 123 8.2 서드파티 지역화 라이브러리를 활용하라 125 8.3 동적 로딩 130 8.4 여러 언어에서의 복수형 처리하기 132 8.5 날짜, 시간, 숫자 형식 나타내기 134 8.6 오른쪽에서 왼쪽으로 쓰는 언어를 고려하라 138 8.7 정리 145 CHAPTER 9 코드 조직화하기 146 9.1 폴더와 파일 구조 147 9.2 명명 규칙 150 9.3 배럴 익스포트 151 9.4 그 밖의 다른 좋은 프랙티스들 152 9.5 정리 157 CHAPTER 10 개인화와 A/B 테스팅 158 10.1 개인화 159 10.2 A/B 테스팅 161 10.3 기능 플래그 168 10.4 정리 172 CHAPTER 11 확장 가능한 웹 아키텍처 173 11.1 확장성 173 11.2 확장 가능한 애플리케이션의 특성 178 11.3 쿠버네티스와 도커는 어디에 적합한가? 179 11.4 Vercel과 Netlify 같은 기술은 어디에 적합한가? 182 11.5 정리 184 CHAPTER 12 테스팅 185 12.1 단위 테스트 186 12.2 엔드-투-엔드 테스트 191 12.3 통합 테스트 200 12.4 스냅숏 테스트 203 12.5 애플리케이션을 어떻게 테스트해야 하는가? 207 CHAPTER 13 툴링 212 13.1 버전 관리: 깃 212 13.2 지속적 통합 215 13.3 번들러 216 13.4 린팅 218 13.5 로깅과 성능 모니터링 219 13.6 정리 221 CHAPTER 14 기술적 마이그레이션 222 14.1 다양한 마이그레이션 전략 223 14.2 마이그레이션 전략 225 14.3 코드모드 226 14.4 생성형 AI의 역할 231 CHAPTER 15 타입스크립트 235 15.1 타입 안전성 235 15.2 빌드 도구와 타입스크립트 238 15.3 구성과 린팅 238 15.4 리액트 + 타입스크립트 242 15.5 선언 파일들 261 15.6 API 결과에 타입 자동 생성 263 15.7 기존 리액트 애플리케이션을 타입스크립트로 마이그레이션하기 270 CHAPTER 16 라우팅 274 16.1 사용자에게 라우팅이 중요한 이유는 무엇인가? 274 16.2 리액트의 라우팅 설루션 279 16.3 정리 290 CHAPTER 17 사용자 중심 API 디자인 292 17.1 일관성 294 17.2 에러 핸들링 300 17.3 문서화 303 17.4 버저닝 305 17.5 보안 309 17.6 이해관계자 참여 315 17.7 최종 고려 사항 316 17.8 더 읽을 거리 317 CHAPTER 18 리액트의 미래 318 18.1 무엇이 달라지는가? 319 18.2 새로운 훅과 API 319 18.3 리액트 컴파일러 333 18.4 리액트 서버 컴포넌트 343 18.5 더 읽을 거리 357 CHAPTER 19 맺음말 358 찾아보기 364

서평

거대 자바스크립트 웹 애플리케이션을 구축하기 위해 알아야 할 모든 것 오늘날 웹 애플리케이션은 풍부한 기능을 제공하기 위해 점점 복잡해지고 있다. 프런트엔드 개발자들은 마치 거대 괴수처럼 덩치가 커져버린 대규모 애플리케이션을 구축하고 유지보수해야 하는 어려움에 직면했다. 바닐라 자바스크립트로 뚝딱뚝딱 프로토타입을 만들고 점차 필요한 기능을 추가해나가는 식으로는 결코 이 도전적인 과업을 달성할 수 없다. 세심한 계획이 필요하다. 이 책은 대규모의, 유지보수 가능한, 확장성을 가진 자바스크립트 웹 애플리케이션을 구축하기 위해 알아야 할 지식, 도구, 기술, 전략을 집대성한 가이드북이다. 코드 예시는 프런트엔드의 사실상 표준인 리액트로 작성되어 있지만 특정 라이브러리에 종속되는 것이 아니라, 개념 설명에 초점을 두면서 구체적인 라이브러리 또는 도구를 통해 개념을 묘사하는 방식이다. 책은 소프트웨어 복잡성에 관한 고찰로 시작한다. 이어서 브라우저의 작동 원리부터 성능 최적화, 성능 문화까지 성능에 관해서도 깊이 있게 살펴보고, 디자인 시스템, 데이터 가져오기, 상태 관리 같은 핵심 개념을 설명한다. 번역과 국제화, 폴더와 파일의 조직화도 다룬다. 책의 후반부는 좀 더 심화된 주제들로, 개인화, A/B 테스팅, 확장성 있는 웹 아키텍처, 테스팅, 툴링, 기술적 마이그레이션, 타입스크립트 등에 관해 논의한다. 마지막 장에서는 리액트 컴파일러나 리액트 서버 컴포넌트를 비롯해 비교적 새로운 리액트의 기능과 API를 설명한다. 웹 개발의 지평은 매우 넓고 지금 이 순간에도 진화를 거듭하고 있다. 알아야 할 게 많은 대규모 웹 개발의 여러 영역을 충실하게 조망하는 이 책이 어려운 도전을 극복하는 데 큰 통찰을 줄 것이다. 원서에서 제공하지 않는 예제 코드와 추가 자료 URL 모음을 번역서 깃허브 저장소에서 제공한다는 점도 본 번역서의 큰 미덕이다. 주요 내용복잡성, 모듈성, 성능, 디자인 시스템, 데이터 페칭 등 대규모 웹 앱 개발의 핵심 개념번역과 국제화, 리액트 애플리케이션을 구조화하고 효과적으로 확장하는 방법개인화, A/B 테스팅, 확장 가능한 웹 아키텍처, 캐싱 전략, 기술 마이그레이션리액트 코드를 안전하게 만드는 타입스크립트와 테스팅
목록
장바구니 담기