[스나이퍼팩토리] 한컴AI아카데미 10주차 - Node.js 내장 모듈 학습 후기
https://www.notion.so/1c7beb15894380439ed6fe4352236e4a?pvs=19
이번 주는 Node.js의 핵심 내장 모듈들을 학습하며, 백엔드 프로그래밍의 기반을 더 탄탄히 다지는 졌다.
서버 성능 확인, 경로 처리, 외부 명령어 실행, URL 파싱 등 실전에서 정말 자주 쓰이는 기능들이라
포트폴리오 개발을 병행 중인 저에게 큰 도움이 되었습니다.
📚 학습한 주요 모듈과 기억할만한 개념
✅ global 객체
- Node.js에서의 전역 객체는 global
- 브라우저에서는 window → 공통 접근 방식은 globalThis
- let, const로 선언한 전역 변수는 전역 객체에 속하지 않음
global.myVar = 'Hello';
console.log(global.myVar); // Hello
❗️전역 변수 남용은 유지보수에 불리하므로 지양!
📸 사진 추천:
👉 globalThis, window, global을 비교하는 표
📍 사진 위치: 이 설명 바로 아래 삽입
✅ os 모듈 - 운영체제 정보
// ✅ os 모듈
console.log('\n[os]');
console.log('운영체제:', os.platform());
console.log('CPU 코어 수:', os.cpus().length);
console.log('사용 가능한 메모리:', os.freemem());
console.log('총 메모리:', os.totalmem());
console.log('서버 부팅 후 경과 시간(초):', os.uptime());
- 서버 운영 정보 출력 시 유용
- os.uptime()으로 서버 부팅 시간 확인도 가능!
📸 사진
✅ process 객체 - 현재 Node 프로세스 정보
// ✅ process 객체
console.log('\n[process]');
console.log('현재 작업 디렉토리:', process.cwd());
console.log('환경변수 NODE_ENV:', process.env.NODE_ENV);
console.log('실행 인자:', process.argv);
if (process.argv.includes('--exit')) {
console.log('종료 테스트');
process.exit(1); // node node-core-modules.js --exit
}
- .env 없이도 process.env.KEY로 변수 설정 가능!
- process.exit(1)으로 오류 종료 처리도 가능
📸 사진 추천:
✅ path 모듈 - 경로 조작의 필수 유틸
// ✅ path 모듈
console.log('\n[path]');
console.log('경로 결합:', path.join('folder', 'sub', 'file.txt'));
console.log('파일명:', path.basename('/a/b/c.txt'));
console.log('확장자:', path.extname('hello.js'));
console.log('분석 결과:', path.parse('/home/user/index.html'));
path.join()을 사용하면 슬래시 문제 없이 경로 생성 가능!
📸 사진 추천:
✅ URL, URLSearchParams - 쿼리 문자열 다루기
// ✅ URL, URLSearchParams
console.log('\n[URL]');
const myURL = new URL('https://site.com/search?page=2&tag=ai');
console.log('전체 URL:', myURL.href);
console.log('tag 값:', myURL.searchParams.get('tag'));
myURL.searchParams.append('sort', 'latest');
myURL.searchParams.set('page', '3');
console.log('수정된 URL:', myURL.toString());
myURL.searchParams.delete('tag');
console.log('삭제 후 URL:', myURL.toString());
- append(), set(), delete()로 URL 수정 가능
- 프론트엔드에서 백엔드 API 호출 시 유용!
📸 사진 추천:
✅ child_process - 외부 명령 실행
// ✅ child_process
console.log('\n[child_process]');
exec('node -v', (error, stdout, stderr) => {
if (error) {
console.error('에러 발생:', error);
return;
}
console.log('Node 버전:', stdout.trim());
});
- spawn(), execFile(), fork() 등 다양한 실행 방식 제공
- 자동화나 외부 프로그램 제어에 사용
✅ fs + stream - 대용량 파일 효율 처리
// ✅ fs + stream
if (fs.existsSync(sourceFile)) {
console.log('\n[fs + stream]');
const readStream = fs.createReadStream(sourceFile);
const writeStream = fs.createWriteStream(copyFile);
readStream.pipe(writeStream);
console.log(`${sourceFile} 를 ${copyFile}로 복사 중...`);
} else {
console.log(`파일 ${sourceFile}이 존재하지 않습니다. 테스트용 파일을 생성해주세요.`);
}
// ✅ 메모리 사용량
console.log('\n[Memory Usage]');
console.log(process.memoryUsage());
- 메모리 사용량을 줄이고 빠르게 파일 복사 가능
- process.memoryUsage()로 확인 가능!
📸 사진 추천:
🔄 회고 (4L 방식)
항목 내용
👍 Liked | 모듈별로 실습하면서 직접 코드로 실험해볼 수 있어 이해가 쉬웠다. |
🧠 Learned | path.join, process.argv, URLSearchParams 등은 포트폴리오 API 설계에 직접 활용 가능하다는 점 |
❗️Lacked | 각 모듈의 쓰임새를 처음에는 혼동해서 정리 시간이 오래 걸림 |
🚀 Longed for | 실제 팀 프로젝트에서 이 모듈들을 적용한 미니 프로젝트 실습이 있다면 좋을 것 같음 |
💡 포트폴리오 활용 아이디어
- process.env → 환경별 API 키 관리
- os/process → 서버 상태 로그 출력 기능
- child_process → DB 백업 자동화 스크립트
- path → 유저 업로드 파일 안전 경로 설정
- URLSearchParams → 필터링 기능 구현
📎 정리하며
Node.js의 내장 모듈들은 프로젝트 개발에서 없어서는 안 될 필수 도구들입니다.
이번 주 학습을 통해 백엔드와 시스템의 연결 고리를 더 깊이 이해하게 되었고,
이제부터 포트폴리오 기능 구현 시 적극 활용해볼 계획입니다.
본 후기는 [한글과컴퓨터x한국생산성본부x스나이퍼팩토리] 한컴 AI 아카데미 (B-log) 리뷰로 작성 되었습니다.
'HancomAI_academy' 카테고리의 다른 글
[스나이퍼팩토리] 한컴AI아카데미 - 나만의 메모 앱 개발 후기 (JWT 인증, REST API 설계, AWS 배포까지) (0) | 2025.04.07 |
---|---|
10주차(4.4) - Mongoose ODM과 사용자 CRUD 구현 후기 (0) | 2025.04.06 |
포트폴리오 페이지 (0) | 2025.03.30 |
🛠️ 팀 일정 관리 웹앱 제작기: AWS EC2 + Express.js + React 실습 적용기 (0) | 2025.03.24 |
[스나이퍼팩토리] 한컴AI아카데미 4주차 후기 (1) | 2025.02.23 |