React Native로 모바일 앱을, Express.js로 서버를 개발하는 풀스택 개발자라면 반드시 알아야 할 도구들을 정리했습니다. 각 도구의 역할과 필요성을 초보자도 이해할 수 있도록 간단명료하게 설명합니다.
빌드 및 번들링 도구
React Native 쪽
Metro React Native 전용 번들러로, 여러 JavaScript 파일을 하나로 묶어 앱에서 실행할 수 있도록 변환합니다. React Native 프로젝트에서 자동으로 설정되며, 코드 변경 시 실시간으로 앱을 업데이트합니다.
Babel 최신 JavaScript 문법을 구형 기기에서도 실행 가능한 코드로 변환하는 트랜스파일러입니다. JSX, 화살표 함수, async/await 등을 구형 JavaScript로 번역합니다.
Flipper React Native 앱을 디버깅할 수 있는 데스크톱 애플리케이션입니다. 네트워크 요청, 로그, 상태 관리 등을 실시간으로 모니터링할 수 있어 개발 과정에서 매우 유용합니다.
React Native CLI React Native 프로젝트를 생성, 빌드, 실행하는 명령어 도구입니다. npx react-native init 명령으로 프로젝트를 시작하고, npx react-native run-android 등으로 앱을 실행합니다.
Expo CLI React Native 개발을 더 쉽게 만들어주는 도구입니다. 복잡한 네이티브 설정 없이 빠르게 앱을 개발할 수 있으며, QR 코드로 실제 디바이스에서 바로 테스트할 수 있습니다.
Express.js 쪽
nodemon 파일 변경을 감지하여 Node.js 서버를 자동으로 재시작하는 도구입니다. 개발 중 코드를 수정할 때마다 수동으로 서버를 재시작할 필요가 없어 개발 효율성을 크게 향상시킵니다.
PM2 프로덕션 환경에서 Node.js 애플리케이션을 관리하는 프로세스 매니저입니다. 서버 충돌 시 자동 재시작, 로드 밸런싱, 로그 관리 등의 기능을 제공합니다.
패키지 관리자
npm Node.js의 기본 패키지 관리자로, 외부 라이브러리를 설치하고 관리합니다. npm install 명령으로 필요한 패키지를 프로젝트에 추가할 수 있습니다.
yarn Facebook에서 개발한 패키지 관리자로, npm보다 빠르고 안정적입니다. 의존성 잠금 파일을 통해 팀원 간 동일한 버전의 패키지를 보장합니다.
npx npm 패키지를 전역 설치 없이 일회성으로 실행할 수 있는 도구입니다. npx create-react-app 처럼 프로젝트 생성 도구들을 임시로 실행할 때 유용합니다.
개발 환경 도구
Node.js JavaScript를 브라우저 밖에서도 실행할 수 있게 해주는 런타임 환경입니다. Express.js 서버를 구동하고 React Native 개발 도구들을 실행하기 위한 필수 요소입니다.
Git 코드의 변경 이력을 추적하고 관리하는 버전 관리 시스템입니다. 협업 시 코드 충돌을 방지하고, 이전 버전으로 롤백할 수 있는 기능을 제공합니다.
VS Code Microsoft에서 개발한 무료 코드 에디터로, JavaScript/TypeScript 개발에 최적화되어 있습니다. 풍부한 확장 프로그램과 IntelliSense 기능으로 개발 생산성을 높입니다.
코드 품질 도구
ESLint JavaScript 코드의 문법 오류, 잠재적 버그, 코딩 스타일 문제를 찾아 경고해주는 도구입니다. 일관된 코딩 스타일을 유지하고 런타임 에러를 사전에 방지할 수 있습니다.
Prettier 코드를 자동으로 일관된 형식으로 포맷팅하는 도구입니다. 들여쓰기, 따옴표, 세미콜론 등의 스타일을 자동으로 통일하여 코드 가독성을 향상시킵니다.
Husky Git 커밋이나 푸시 전에 자동으로 코드 검사를 실행하는 도구입니다. ESLint와 Prettier를 커밋 전에 자동 실행하여 품질이 낮은 코드가 저장소에 올라가는 것을 방지합니다.
테스트 도구
Jest JavaScript 테스트 프레임워크로, 함수나 컴포넌트의 동작을 자동으로 검증합니다. 단위 테스트, 통합 테스트를 작성하여 코드의 안정성을 보장할 수 있습니다.
Supertest Express.js API 엔드포인트를 테스트하는 라이브러리입니다. HTTP 요청을 시뮬레이션하여 서버의 응답을 검증하고, API의 정상 동작을 확인할 수 있습니다.
React Native Testing Library React Native 컴포넌트의 렌더링과 사용자 상호작용을 테스트하는 도구입니다. 실제 사용자 관점에서 컴포넌트의 동작을 검증할 수 있습니다.
타입 체크 도구
TypeScript JavaScript에 정적 타입 시스템을 추가한 언어입니다. 컴파일 시점에 타입 오류를 발견하여 런타임 에러를 줄이고, IDE의 자동완성과 리팩토링 기능을 향상시킵니다.
@types/node Node.js API에 대한 TypeScript 타입 정의를 제공합니다. Node.js의 fs, path, http 등 내장 모듈을 TypeScript에서 타입 안전하게 사용할 수 있게 합니다.
@types/express Express.js 프레임워크에 대한 TypeScript 타입 정의입니다. Request, Response 객체와 미들웨어 함수들의 타입을 정확히 추론할 수 있어 개발 시 실수를 줄입니다.
HTTP 및 API 도구
Axios HTTP 요청을 쉽게 만들 수 있는 JavaScript 라이브러리입니다. Promise 기반으로 작동하며, 요청/응답 인터셉터, 자동 JSON 변환 등의 편리한 기능을 제공합니다.
Fetch API 브라우저에 내장된 HTTP 클라이언트 API입니다. 별도 설치 없이 사용할 수 있으며, Promise를 반환하여 비동기 HTTP 요청을 처리할 수 있습니다.
Postman API를 테스트하고 문서화하는 GUI 도구입니다. REST API 엔드포인트에 다양한 HTTP 요청을 보내고 응답을 확인하여 서버 개발 과정에서 디버깅에 활용합니다.
Thunder Client VS Code 확장 프로그램으로, Postman과 유사한 기능을 에디터 내에서 제공합니다. 별도 프로그램 설치 없이 API 테스트를 수행할 수 있어 개발 워크플로우가 간소화됩니다.
보안 및 인증 도구
bcrypt 비밀번호를 안전하게 해시화하는 라이브러리입니다. 단방향 암호화를 통해 원본 비밀번호를 복구할 수 없게 하며, salt를 자동으로 생성하여 레인보우 테이블 공격을 방지합니다.
jsonwebtoken JWT(JSON Web Token)를 생성하고 검증하는 라이브러리입니다. 서버와 클라이언트 간 안전한 정보 전달을 위한 토큰 기반 인증 시스템을 구현할 수 있습니다.
helmet Express.js 애플리케이션의 보안을 강화하는 미들웨어 모음입니다. XSS, 클릭재킹, MIME 스니핑 등 다양한 웹 취약점으로부터 서버를 보호합니다.
cors Cross-Origin Resource Sharing을 설정하는 Express 미들웨어입니다. 브라우저의 동일 출처 정책을 우회하여 다른 도메인에서의 API 요청을 허용할 수 있습니다.
데이터베이스 관련
SQL 데이터베이스
MySQL2 MySQL 데이터베이스에 연결하고 쿼리를 실행하는 Node.js 드라이버입니다. Promise 지원과 Prepared Statement를 통한 SQL 인젝션 방지 기능을 제공합니다.
pg PostgreSQL 데이터베이스 클라이언트 라이브러리입니다. 고급 SQL 기능과 JSON 데이터 타입을 지원하며, 복잡한 쿼리와 트랜잭션 처리에 우수합니다.
Sequelize SQL 데이터베이스를 위한 Promise 기반 ORM입니다. JavaScript 객체로 데이터베이스 테이블을 다룰 수 있으며, 마이그레이션과 시딩 기능을 제공합니다.
Prisma 현대적이고 타입 안전한 데이터베이스 ORM입니다. 스키마 정의를 통한 자동 타입 생성과 직관적인 쿼리 빌더를 제공하여 데이터베이스 작업을 단순화합니다.
NoSQL 데이터베이스
mongoose MongoDB를 위한 ODM(Object Document Mapping) 라이브러리입니다. 스키마 기반 모델링을 통해 MongoDB 문서를 JavaScript 객체로 쉽게 다룰 수 있게 합니다.
redis 인메모리 데이터 구조 저장소로, 주로 캐싱과 세션 저장에 사용됩니다. 빠른 읽기/쓰기 성능을 제공하여 애플리케이션의 응답 속도를 크게 향상시킵니다.
UI 및 스타일링
styled-components CSS-in-JS 라이브러리로, JavaScript 코드 내에서 CSS 스타일을 정의할 수 있습니다. 컴포넌트 기반 스타일링과 동적 스타일 변경이 가능합니다.
react-native-vector-icons React Native에서 Font Awesome, Material Icons 등 다양한 아이콘을 사용할 수 있게 해주는 라이브러리입니다. 벡터 기반으로 해상도에 관계없이 선명한 아이콘을 표시합니다.
react-native-paper Material Design을 따르는 React Native UI 컴포넌트 라이브러리입니다. 일관성 있고 아름다운 사용자 인터페이스를 빠르게 구축할 수 있습니다.
NativeBase 크로스 플랫폼 모바일 개발을 위한 UI 컴포넌트 라이브러리입니다. 접근성을 고려한 다양한 사전 구축된 컴포넌트를 제공합니다.
라우팅 및 네비게이션
React Native
@react-navigation/native React Native 앱에서 화면 간 이동을 관리하는 네비게이션 라이브러리입니다. 웹의 라우터와 유사한 기능을 모바일 앱에서 제공합니다.
@react-navigation/stack 스택 기반 네비게이션을 구현하는 라이브러리입니다. 화면을 스택처럼 쌓아 올리고, 뒤로 가기 버튼으로 이전 화면으로 돌아갈 수 있습니다.
@react-navigation/bottom-tabs 화면 하단에 탭 바를 생성하는 네비게이션 라이브러리입니다. 주요 섹션 간 빠른 전환을 위한 탭 기반 인터페이스를 제공합니다.
Express.js
express.Router() Express의 내장 라우터로, 관련된 라우트들을 모듈화하여 구성할 수 있습니다. 미들웨어 스택을 분리하고 코드를 더 체계적으로 관리할 수 있게 합니다.
상태 관리
Redux Toolkit Redux의 공식 개선 도구로, 보일러플레이트 코드를 줄이고 더 간단한 상태 관리를 제공합니다. 복잡한 앱의 전역 상태를 예측 가능하게 관리할 수 있습니다.
Zustand 가벼우면서도 강력한 상태 관리 라이브러리입니다. Redux보다 설정이 간단하며, TypeScript와 잘 통합되어 중소 규모 앱에 적합합니다.
React Context React에 내장된 상태 관리 API로, 컴포넌트 트리를 통해 데이터를 전달할 수 있습니다. 간단한 전역 상태나 테마 관리 등에 유용합니다.
로그 및 모니터링
winston Node.js를 위한 강력한 로깅 라이브러리입니다. 다양한 로그 레벨과 전송 방식을 지원하여 애플리케이션의 동작을 효과적으로 추적할 수 있습니다.
morgan Express.js를 위한 HTTP 요청 로거 미들웨어입니다. 들어오는 HTTP 요청에 대한 정보를 자동으로 로그에 기록하여 API 사용 패턴을 분석할 수 있습니다.
React Native Debugger React Native 앱을 디버깅하기 위한 독립 실행형 앱입니다. Redux DevTools, Chrome DevTools를 통합하여 포괄적인 디버깅 환경을 제공합니다.
클라우드 및 배포
Docker 애플리케이션을 컨테이너화하여 어떤 환경에서든 동일하게 실행할 수 있게 하는 플랫폼입니다. 개발, 테스트, 프로덕션 환경 간의 차이를 최소화합니다.
AWS / Google Cloud / Azure 클라우드 컴퓨팅 플랫폼으로, 서버 인프라를 임대하여 애플리케이션을 배포할 수 있습니다. 확장성과 안정성을 제공하는 다양한 서비스를 제공합니다.
Heroku 코드를 push하는 것만으로 쉽게 웹 애플리케이션을 배포할 수 있는 PaaS 플랫폼입니다. 복잡한 서버 설정 없이 빠른 프로토타입 배포에 적합합니다.
React Native 특화 도구
react-native-async-storage React Native에서 데이터를 로컬에 저장하는 라이브러리입니다. 사용자 설정, 캐시 데이터 등을 디바이스에 영구 저장할 수 있습니다.
react-native-image-picker 디바이스의 카메라나 갤러리에서 이미지를 선택할 수 있게 해주는 라이브러리입니다. 프로필 사진 업로드 등의 기능 구현에 필수적입니다.
react-native-permissions iOS와 Android의 시스템 권한을 관리하는 라이브러리입니다. 카메라, 위치, 알림 등의 권한을 통일된 API로 요청하고 확인할 수 있습니다.
react-native-push-notification 푸시 알림 기능을 구현하는 라이브러리입니다. 로컬 알림과 원격 푸시 알림을 통해 사용자 참여도를 높일 수 있습니다.
개발 워크플로우 도구
Fastlane iOS와 Android 앱의 빌드, 테스트, 배포 과정을 자동화하는 도구입니다. 앱스토어 업로드부터 스크린샷 생성까지 모든 배포 과정을 스크립트로 관리할 수 있습니다.
CodePush React Native 앱을 앱스토어 심사 없이 실시간으로 업데이트할 수 있게 해주는 Microsoft의 서비스입니다. 버그 수정이나 소규모 기능 업데이트를 즉시 배포할 수 있습니다.
GitHub Actions GitHub에서 제공하는 CI/CD 플랫폼으로, 코드 커밋 시 자동으로 테스트, 빌드, 배포를 실행할 수 있습니다. 개발 워크플로우를 완전히 자동화할 수 있습니다.
학습 우선순위
필수 도구 (즉시 학습)
Node.js, npm/yarn, Metro, Babel, ESLint, Prettier, Axios, nodemon을 먼저 익혀야 합니다. 이 도구들은 기본적인 개발 환경 구축과 코드 작성에 필수적입니다.
중요 도구 (프로젝트 진행하며 학습)
TypeScript, Jest, React Navigation, bcrypt/JWT, 데이터베이스 ORM, 보안 미들웨어를 단계적으로 학습하세요. 이 도구들은 실제 서비스 개발 시 반드시 필요합니다.
고급 도구 (필요시 학습)
Redux Toolkit, Docker, PM2, Fastlane, CodePush는 프로젝트 규모가 커지거나 특별한 요구사항이 있을 때 학습하면 됩니다.
React Native와 Express.js 개발 여정에서 이 도구들을 단계적으로 익혀나가시길 바랍니다. 모든 것을 한 번에 배우려 하지 말고, 프로젝트의 필요에 따라 점진적으로 도입하는 것이 효과적입니다.
'개발' 카테고리의 다른 글
| EC2에 도메인 연결하기: 완전 초보자 가이드 (0) | 2025.09.08 |
|---|---|
| EC2에서 Nginx와 Let's Encrypt로 HTTPS 서버 구축하기 (1) | 2025.09.08 |
| Monorepo 도구 완전 가이드: 초보자를 위한 npm workspaces, Lerna, Nx 비교 (0) | 2025.08.22 |
| React Native + Express.js 프로젝트의 Git 저장소 구성 가이드 (0) | 2025.08.22 |
| React Native/Expo 개발, 로컬 서버 연결 실패? 원인부터 해결까지 (0) | 2025.08.22 |