목차
- 클라우드 오브젝트 스토리지 선택과 비용 이슈
- 타입스크립트 기본 개념 질문과 설명
- React Native 최신 변화 및 Expo 생태계 논의
- 스타일 관리: StyleX와 기존 CSS-in-JS 비교
- 안드로이드 스튜디오 빌드 문제와 USB 디버깅 실수
- Apache Tomcat 설치 및 실행 방법
- Next.js 앱 라우터 안정화와 사용 경험
- React에서 상태관리 팁 (Ant Design Drawer 관련)
- 토스 증권 커뮤니티 영구 정지 사례와 운영정책 이슈
- 개발 환경과 툴 관련 문제 공유 및 해결 조언
1. 클라우드 오브젝트 스토리지 선택과 비용 이슈 ☁️
- 클라우드타입 백엔드에 디스크 마운트가 지원되지 않아 외부 오브젝트 스토리지를 찾아봄.
- S3 (Amazon Simple Storage Service) 추천과 사용 결정.
- 오브젝트 스토리지는 파일이나 데이터 블록을 객체 단위로 저장하는 방식으로, 디스크처럼 마운트되지 않고 REST API로 접근 가능.
- 비용 관리는 복잡하지만 용량이 크고 안정적이라 다른 대안이 거의 없음.
- 클라우드플레어도 대안으로 고려할 수 있으나 AWS S3가 보편적 선택.
2. 타입스크립트 기본 개념 질문과 설명 💡
- 자바스크립트에는 enum과 튜플이 존재하지 않으며, 타입스크립트에서만 제공하는 기능임.
- enum: 열거형으로 상수 집합을 이름 붙여 관리할 때 사용. JS에는 없으나 TS에선 코드 가독성과 안정성을 위해 자주 사용됨.
- 튜플: 고정된 요소 개수와 타입을 가지는 배열, JS는 타입이 없으므로 TS 전용.
- string | number | any 같은 유니언 타입에서 any는 모든 타입을 포괄하므로 사실상 any가 우선 적용됨.
- 타입스크립트는 점점 더 실무에서 중요해지고 있음.
3. React Native 최신 동향과 Expo 생태계 🛠️
- Expo는 React Native 개발을 쉽게 하기 위한 생태계로, 자체 CLI와 EAS(Expo Application Services) 등의 서비스를 제공.
- react-native init 명령어가 2024년 12월 31일 중단 예정이나, 최신 커맨드로 대체해 사용 가능.
- Expo Router는 간단하고 직관적인 반면, 복잡한 커스터마이징에 한계가 있음.
- React Navigation이 아직 대중적이며 복잡한 네비게이션에 적합함.
- Expo는 점차 Next.js급 DX(Developer Experience)를 목표로 하며, 로컬 개발도 잘 지원하고 있음.
- CNG (Configurable Native Modules)라는 개념으로 Expo의 unimodules를 개선, 네이티브 모듈 사용을 더 간편하게 만듦.
- 기존 eject 개념은 사라지고 Expo를 점진 도입하는 방식이 권장됨.
- Turbo Modules와 같은 최신 React Native 기술도 도입 완료 중.
4. 스타일 관리: StyleX와 기존 CSS-in-JS 비교 🎨
- StyleX는 Facebook에서 만든 스타일링 라이브러리로, 빌드 시 CSS 파일을 생성해 성능 최적화를 달성.
- 기존 emotion, styled-components는 런타임에 스타일을 생성해 성능 저하 우려가 있음.
- React Native의 StyleSheet.create와 비슷한 개념이라 RN 개발자에게 익숙함.
- StyleX는 웹용으로도 적합해 RN 경험자가 적응하기 쉬움.
- 컴포넌트와 스타일의 결합도를 낮춰 코드 가독성이 향상되는 장점이 있음.
- 완전히 StyleX로 교체하기 어려운 경우 모듈 CSS, SCSS 병행 사용 가능.
5. 안드로이드 스튜디오 빌드 문제와 USB 디버깅 실수 🤦♂️
- 최신 안드로이드 스튜디오에 맞춘 JDK 및 Gradle 버전 문제로 빌드 에러 발생 빈번.
- USB 디버깅 설정을 까먹는 경우가 많아 개발 시간 낭비 요인.
- Android 빌드 환경을 위해 JDK, Gradle, SDK 호환성 유지가 매우 중요함.
- 개발자용 USB 케이블 문제도 의심되는데, 디버깅 옵션 확인을 우선 권장함.
6. Apache Tomcat 설치 및 실행 방법 ☕
- Tomcat은 자바 서블릿 컨테이너로, zip 압축 파일 다운로드 후 별도 설치 프로그램 없이 실행 가능.
- Windows용 인스톨러가 있으나 zip 파일로 받아서 직접 실행하는 경우도 많음.
- Tomcat 실행은 배치파일(startup.bat) 또는 터미널 명령으로 서버 구동.
- Windows 서비스 설치 옵션을 사용하면 부팅 시 자동실행 설정 가능.
- Unix 환경에서는 jsvc를 빌드해서 데몬처럼 실행할 수 있음.
- 공식 문서와 RUNNING.txt 파일 참조 추천.
7. Next.js 앱 라우터 안정화와 사용 경험 🔄
- Next.js 13부터 앱 라우터가 도입되었으며, 15버전(릴리즈 후보)에서 안정화 진행 중.
- 앱 라우터는 파일 기반 라우팅에 서버 컴포넌트와 클라이언트 컴포넌트 구분을 지원함.
- "use client" 지시문은 반드시 파일 최상단에 위치시켜야 하며 그렇지 않으면 오류 발생.
- 고급 기능이 아직 완전하지 않아서 복잡한 프로젝트는 React Navigation 등 기존 방식도 고려됨.
- Next.js 14, 15 버전에서도 사용 가능하나 점진적으로 버그가 줄어드는 추세임.
8. React 상태관리 팁: Ant Design Drawer 예제 📝
- Drawer 컴포넌트에서 클릭한 항목의 id 값을 부모 컴포넌트 상태로 올려서 관리하는 일반적 방식 추천.
- useState를 활용해 setOpen(true)와 함께 클릭한 id를 상태로 저장하면 깔끔함.
- 별도의 정적 함수 호출 방법보다 상태로 관리해야 UI 업데이트와 동기화가 쉬움.
- 필요한 경우 overlay-kit 라이브러리를 활용해 모달/드로어 호출 구조를 간소화할 수 있음.
- Ant Design의 Modal.confirm 처럼 확장 기능 활용 가능하지만 Drawer는 정적 메서드 없음.
9. 토스 증권 커뮤니티 영구 정지 사례와 정책 이슈 ⚠️
- 오픈채팅방 링크 공유가 토스 증권 커뮤니티 운영 정책 위반으로 자동 정지 사유.
- 신고 누적으로 인해 사전 경고 없이 바로 영구 정지가 이루어지는 경우가 있음.
- 정지 이유에 억울함을 호소하는 사례 많으나, 정책 노출이 미흡해 대응이 어렵다는 의견.
- 토스 증권 내부 커뮤니티는 리딩방(투자 권유) 뿐 아니라 단순 수다방도 엄격하게 관리됨.
- 해결을 위해 공식 상담원 접촉 및 증빙자료 제출해도 부서 연결 어려움.
- 정책 준수를 위한 커뮤니티 활동 관리 필요.
10. 개발 환경과 툴 관련 문제 공유 및 해결 조언 🛠️
- Xcode 인덱싱 시간이 오래 걸려 불편함, 대안으로 Expo 사용 권장.
- React Native 최신 버전 업데이트 시 npm 패키지 호환성 점검 필요.
- Flipper 디버깅 도구 사용 여부와 관련해 네이티브 코드 추가가 복잡할 수 있음.
- AI 도구(예: ChatGPT) 활용은 코드 작성, 문제 해결에 도움되나 완전 대체는 어려움.
- Gradle, JDK, React Native 버전 맞춤 설정이 빌드 성공 열쇠.
- 출근, 근무 시간 관련 소소한 대화 및 농담도 있음.
면접팁⚡
- 타입스크립트에서 enum과 튜플의 차이를 설명할 수 있어야 함. JS에는 없는 개념임을 명확히 할 것.
- React Native Expo와 Bare Workflow 차이, 그리고 EAS와 CNG 개념에 대해 이해하고 있으면 기술면접에서 경쟁력 있음.
- Next.js 앱 라우터에서 'use client' 지시문의 위치 문제와 서버/클라이언트 컴포넌트 구분 이해를 보여주면 좋음.
- Ant Design 컴포넌트 등 UI 라이브러리 사용 시 상태 관리 원칙(상태 끌어올리기 등)에 대해 명확히 설명할 것.
링크🔗
-
React Native Upgrade Helper:
https://react-native-community.github.io/upgrade-helper/?from=0.73.6&to=0.75.4 -
Flipper 없이 React Native 개발하기:
https://shift.infinite.red/why-you-dont-need-flipper-in-your-react-native-app-and-how-to-get-by-without-it-3af461955109 -
Expo 점진 도입 가이드:
https://expo.dev/blog/how-to-incrementally-adopt-expo -
Ant Design Modal confirm 예제:
https://ant.design/components/modal#modal-demo-confirm -
Overlay Kit 공식 문서:
https://overlay-kit.slash.page/ko/quickstart.html#_2-%E1%84%8B%E1%85%A9%E1%84%87%E1%85%A5%E1%84%85%E1%85%A6%E1%84%8B%E1%85%B5-%E1%84%8B%E1%85%A7%E1%86%AF%E1%84%80%E1%85%B5 -
Tomcat 다운로드 및 설치 문서:
https://tomcat.apache.org/download-90.cgi
http://localhost:8080/docs/setup.html#Windows (Tomcat 로컬 접속 예시) -
React 공식 새 프로젝트 시작법:
https://react.dev/learn/start-a-new-react-project#production-grade-react-frameworks -
React Native Firebase:
https://www.npmjs.com/package/@react-native-firebase/app
https://www.npmjs.com/package/@react-native-firebase/messaging
https://www.npmjs.com/package/@notifee/react-native -
토스 증권 커뮤니티 운영 정책:
https://corp.tossinvest.com/ko/device-contents/disclaimer-community