목차
- 패키지 및 호스팅 서비스 이야기
- React 상태 관리와 useEffect 의존성 문제
- AWS Summit과 업무 관련 소소한 대화
- React에서 로그인 상태 유지 방법과 보안 이슈
- Next.js 인증·인가와 서버 컴포넌트, 서버 액션 이해하기
- React 프로젝트 내 특정 폴더명(import 문제) 이슈
- 개발 경력(년차) 표현과 문화 이야기
- 개발 환경: VSCode, 모니터 세팅, 라이브러리 충돌 및 버전 문제
- React Native, Expo 질문 및 답변
- 소소한 개발자 일상과 잡담 정리
1. 패키지 및 호스팅 서비스 이야기
- GoDaddy, 가비아 등 호스팅 서비스가 언급됨.
- GoDaddy가 가장 많이 사용하는 편이라는 의견이 있었음.
2. React 상태 관리와 useEffect 의존성 문제
- React에서 상태(State) 객체가 바뀔 때 깊은 복사(deep copy)를 하지 않으면 상태 변경이 감지되지 않는 경우가 있음.
- 상태를 업데이트 할 때, 기존 객체를 그대로 참조하면 React가 변경을 인지하지 못함.
- 따라서, state를 업데이트할 때는 변경된 부분을 복사해서 새로운 객체를 만들어야 함.
- useEffect 훅의 의존성 배열에 객체를 넣으면, 객체가 참조 타입이므로 내부 값이 바뀌지 않아도 매번 실행될 수 있음.
- 의존성 배열에 [obj.key, obj.key2]와 같이 구체적 프로퍼티를 명시하는 방법으로 이를 방지할 수 있음.
- 비동기 내부에서 state setter를 사용하는 패턴이 문제를 일으킬 수 있으니 주의해야 함.
- effect는 의존성 배열에 따라 실행 시점이 달라짐. 라이브러리나 React 버전마다 실행 방식이 다를 수 있음.
3. AWS Summit과 업무 관련 소소한 대화
- 'AWS Summit Seoul' 행사에 관한 간단한 대화가 오감.
- 업무 중 스팸 문자 차단 때문에 불편함이 있었다는 이야기.
- 주 4일제와 관련된 희망과 현실 이야기, 주 4일제 시행 후 업무 강도가 꽤 높아지는 경험을 공유함.
4. React에서 로그인 상태 유지 방법과 보안 이슈
- 페이지 새로고침 시 로그인 사용자 ID 유지 문제.
- 일반적으로 JWT 토큰은 로컬 스토리지에 저장하지만 보안상 위험(XSS 공격)에 노출됨.
- 보안팀 권장사항은 토큰을 쿠키에 저장하는 것.
- 토큰 만료시간을 체크해 유효성 검증 후 갱신하거나 로그아웃 처리하는 방법.
- App 컴포넌트 최초 렌더링 시 토큰 유무를 확인하여 상태를 복원하는 것이 보통의 패턴.
- 참고로 React에서 로컬 스토리지에 대해 주의가 필요하며, 토큰 보안은 최우선 고려사항임.
초보자도 알기 쉽게!
- XSS (크로스 사이트 스크립팅): 악성 스크립트를 웹페이지에 삽입해 사용자의 정보를 탈취할 수 있는 공격 방법.
- JWT (JSON Web Token): 서버와 클라이언트 간 인증 정보를 안전하게 전달하는 토큰 방식.
- 로컬 스토리지는 쉽게 접근 가능해 공격에 취약하므로 중요한 정보는 쿠키(적절히 설정한 HttpOnly, Secure 옵션 포함)에 저장하는게 안전.
5. Next.js 인증·인가와 서버 컴포넌트, 서버 액션 이해하기
- Next.js의 app router에서 서버 컴포넌트(Server Component)와 클라이언트 컴포넌트(Client Component)의 역할이 중요함.
- 서버 컴포넌트는 서버에서 렌더링되는 컴포넌트이며, 클라이언트 컴포넌트는 브라우저에서 동작하는 컴포넌트임.
- 폼(form) 제출은 보통 클라이언트 컴포넌트에서 처리하지만, Next.js의 서버 액션(Server Action)을 사용하면 서버 컴포넌트 안에서 서버측 로직을 선언하고 클라이언트 컴포넌트에서 호출 가능함.
- 서버 액션은 비동기 함수이며, React의 experimental 기능으로 아직 정식으로 안정적 사용이 확립되지는 않았지만 발전 중임.
- 서버 컴포넌트와 클라이언트 컴포넌트를 적절히 분리해서 작성해야 하며, 서버 컴포넌트 내에서 클라이언트 컴포넌트로 기능을 넘기는 패턴이 중요함.
- 인증 처리 역시 서버에서 하도록 설계하는 것이 보안상 좋음.
6. React 프로젝트 내 특정 폴더명(import 문제) 이슈
- constants 폴더명을 사용하는 도중, import가 안 되는 문제 발생.
- 이유는 Node.js 기본 모듈과 이름이 충돌하기 때문임.
- Node.js 기본 모듈에 constants라는 이름이 존재해, 동일 폴더명을 import할 때 충돌이 생겨 경로 해석 문제 발생.
- 해결 방법:
- 폴더명을 constant 같은 다른 이름으로 수정하거나
- alias 설정(tsconfig.json 또는 jsconfig.json)에서 경로 충돌을 회피하는 방법.
- npm install @types/node를 통해 타입 정의를 명확히 하면 에디터가 올바르게 인식 가능.
- 이런 문제는 모듈 네임 스페이스 충돌(Module Name Collision) 또는 네이밍 충돌로 표현될 수 있음.
7. 개발 경력(년차) 표현과 문화 이야기
- "0년차" 개발자는 있을 수 없는 표현이라는 의견과, 경력 산정이 모호하다는 논의.
- 경력 산정은 보통 실제 일한 기간(365일 단위)로 하지만 업계나 개인마다 다를 수 있음.
- 신입, 초년 등으로 표현하는 경우가 많고, 경력 년차를 구체적으로 따지는 문화는 차이가 있음.
- 예를 들어, 1년차는 만 1년이 지난 사람, 2년차는 만 2년이 지났을 때.
- 경력 개념과 비슷한 예시로 임신 주차나 한국 나이 같은 사회적 기준 비유가 나왔음.
8. 개발 환경: VSCode, 모니터 세팅, 라이브러리 충돌 및 버전 문제
- VSCode 업데이트 알림이 계속 떠서 불편함, 재설치를 권장하는 의견.
- 모니터 사이즈 및 피벗(pivot) 기능 사용에 대한 경험 공유 (24", 27", 32" 조합 추천).
- 라이브러리 충돌 또는 path 문제 해결을 위해 node_modules 삭제 후 재설치, 의존성 하나씩 제거하며 문제 찾기 권장.
- Tailwind CSS로 레이아웃 작업 후 MSW(Mock Service Worker)와 GraphQL 조합 시도 경험 공유.
- 여러 프로젝트, 레포지토리를 한 번에 열어 작업할 경우 노트북 사양 문제 언급.
- GitHub 비공개 저장소 문제와 코드 리뷰 요청 시 공유 문제도 거론됨.
9. React Native, Expo 질문 및 답변
- Expo에서 package.json 버전 설정 관련 팁:
- 버전을 직접 입력하는 대신 "*" 같은 와일드카드 문자 사용 시 자동으로 최신 버전을 불러올 수 있음.
- React Native에서도 React와 유사한 패턴이지만, 특정 제한사항은 없고 질문 자유롭게 가능함.
- React Native 프로젝트에서 constants 폴더 import 문제와 관련한 문의.
- Expo, React Native 커뮤니티에서 유용한 정보들이 공유됨.
10. 소소한 개발자 일상과 잡담 정리
- 오프라인 행사, AWS Summit, 팬미팅 등 개발자 커뮤니티 활동 언급.
- 개발 업무, 야근, 주말 출근, 일과 삶 균형 고민.
- 웃음 섞인 농담, ‘연봉’, ‘데이트 비용’, ‘훈훈한 사무실 분위기’ 등 다양한 이야기.
- 게임 ‘얼라이언스 vs 호드’ 밈, 드립 대화.
- 치킨, 돈까스 같은 음식 이야기와 함께 이모티콘 활용한 대화.
- GPT 활용 팁, 코파일럿에 대한 기대감과 스니펫 작성법.
- 개발을 처음 시작하는 초보자들이 겪는 질문과 응원.
면접팁⚡
- React 상태 관리에서 깊은 복사의 중요성: 상태 변경 시 참조가 아닌 새로운 객체를 만들어야 React가 변경을 감지함을 정확하게 설명할 수 있어야 함.
- JWT 토큰 저장 방식과 보안 문제: 로컬 스토리지와 쿠키 저장의 차이점, XSS 공격 위험성, 서버 검증 패턴을 이해하고 설명하기.
- Next.js 서버 컴포넌트와 서버 액션 활용법: SSR과 CSR의 차이, 데이터 처리의 위치 분리, 인증 처리 권장 방식에 대한 이해도 중요.
- 모듈 네이밍 충돌 문제 해결 경험 공유: 프로젝트에서 발생할 수 있는 네이밍 충돌 문제와 해결법을 구체적으로 언급할 것.
- 경력(년차 기준) 표현에 관한 유연한 이해: 면접에서 경력 산정 방식에 관해 현업 분위기와 문화를 염두에 두고 답변하기.
링크🔗
-
React 상태 관리 깊은 복사 참고 영상
https://www.youtube.com/watch?v=T8TZQ6k4SLE -
React 공식 문서: JSX 방어 및 XSS 공격 방어 설명
https://ko.legacy.reactjs.org/docs/introducing-jsx.html#jsx-prevents-injection-attacks -
Next.js Server Actions 관련 문서
https://unicorn-utterances.com/posts/what-are-react-server-actions#What-is-use-server -
Gmarket 상품 링크 (데이트 용품 관련)
https://item.gmarket.co.kr/Item?goodscode=3322412406 -
Tossinvest (증권 정보)
https://tossinvest.com/_ul/BQPxFB -
ChatGPT 공유 대화 링크
https://chat.openai.com/share/1d170636-ebbb-4d56-a490-22cca53ce66f
#React#NextJS#JWT#useEffect#서버액션#ReactNative#인증#로그인#개발년차#AWS