목차
- Python ORM 선택과 Django vs FastAPI
- Prisma와 TypeORM 마이그레이션 경험
- 자동화된 테스트와 TDD 활용
- AI와 개발자의 미래에 대한 대화
- JWT 토큰 관리와 Redis 활용법
- Kafka 장애 대응 및 Multi Schema 활용
- TypeScript ESLint 설정과 타입 체크 중요성
- Prisma에서 Date-Time 타입 처리 이슈
- 이직과 퇴사에 대한 경험과 조언
- Refresh Token 관리 및 다중 로그인 고려사항
1. Python ORM 선택과 Django vs FastAPI 🐍
- Python에서 ORM(Object-Relational Mapping)으로 Django Model을 사용하는 경우가 많음.
- Flask를 쓰려던 개발자도 장고 REST 프레임워크에 관심을 보임.
- FastAPI를 추천하는 목소리도 많음. FastAPI는 빠르고 현대적인 비동기 지원 Python 웹 프레임워크.
- ORM은 데이터베이스 작업을 객체지향적으로 다루게 해 코드 생산성을 올려주며, 프레임워크 선택에 따라 ORM 구현체도 다름.
2. Prisma와 TypeORM 마이그레이션 경험 🔄
- TypeORM에서 Prisma로 마이그레이션시 어려움이 클 수 있음.
- 단순히 entity나 모델 파일 형식 변환뿐 아니라, 프로젝트 전반적으로 손봐야 할 부분 많음.
- 테스트 코드 유무가 큰 차이. 테스트가 없으면 대응하기 더 힘듬.
- 만약 repository 패턴을 잘 활용했다면 상대적으로 수월할 수도 있음.
- Prisma는 타입 안정성과 자동 마이그레이션 지원으로 인기, 그러나 초기 기존 코드 마이그레이션 시 고통스럽다는 의견 존재.
3. 자동화된 테스트와 TDD 활용 🧪
- 테스트 코드를 손으로 작성하는 것이 시간과 노력이 많이 필요해, AI 에이전트를 활용해 자동으로 테스트를 생성, 실행하는 시도도 활발.
- TDD(Test-Driven Development)의 본질은 사용자 관점에서 인터페이스와 사용성을 맞추는 데 의의가 있음.
- 실제 개발에서는 로직 작성 후 나중에 테스트를 작성하는 경우 많아 TDD를 완전하게 지키기 어렵다는 의견 다수.
- AI를 활용한 자동 테스트가 활발해지고 있으나 완전 대체는 아직 먼 미래라는 토론도 진행됨.
4. AI와 개발자의 미래 🤖
- AI 기술 발전으로 일부 개발자 역할이 대체될 가능성에 대한 우려가 있음.
- 하지만 AI는 고도의 사고나 고부가 가치 노동의 완전 대체는 아직 어려움.
- AI 관련 비용(트레이닝 및 서빙)이 매우 높아서 비용 최적화가 핵심 과제로 남아있음.
- 앞으로 다양한 수준의 AI 서비스 시장이 공존할 것으로 예상됨.
- 엔비디아와 브로드컴 등의 하드웨어 업체가 AI 성능과 비용 최적화 경쟁 중.
5. JWT 토큰 관리와 Redis 활용 방법 🔐
- JWT(Json Web Token)는 보통 서버 상태를 저장하지 않고 인증 정보를 자체적으로 담아 활용.
- Redis 같은 인메모리 저장소에 JWT 토큰을 저장하는 경우는 액세스 토큰보다는 리프레시 토큰 관리에 집중함.
- 리프레시 토큰은 탈취 시 만료가 어려워 서버에서 관리하는 경우가 많음.
- 로그아웃 시 서버에서 토큰 상태를 저장해 강제 만료 처리하는 전략도 있음.
- 멀티 디바이스나 다중 로그인 환경에서는 리프레시 토큰을 배열로 관리해야 하므로 구현이 복잡.
- 일부는 하이브리드 방식(서버 저장 + 클라이언트 토큰)을 추천.
JWT 개념 소개
- JWT는 사용자 인증 후 서버가 토큰을 발급하고, 클라이언트는 이 토큰으로 각 요청을 인증함.
- 서버 부하를 줄이고 무상태(stateless) 인증을 가능하게 하지만, 토큰 탈취 시 위험.
- 토큰 만료 시간 조절과 토큰을 검증하는 적절한 서버 전략이 필요함.
6. Kafka 장애 대응과 Multi Schema ✨
- Kafka 장애 발생 시 DB를 Queue처럼 사용해 장애를 우회하는 fallback 전략을 일부 대형 서비스에서 사용.
- Multi Schema는 하나의 프로젝트에서 여러 DB 스키마를 관리하는 기능으로, Prisma 공식 문서에 소개됨.
- 이런 전략은 가용성 확보가 중요한 게임 서버 등에서 특히 중요.
- 장애 데이터는 별도 DB에 임시 저장 후, 복구 시 원 DB에 재입력하는 방식으로 운영.
7. TypeScript ESLint 설정과 타입 체크 ✅
- TypeScript 프로젝트에서 린트 설정은 필수.
- 기본 stricttypecheck 설정만으로도 많은 타입 관련 오류를 잡을 수 있음.
- 린트 설정은 프로젝트 성격에 맞게 수정하는 것이 중요하며, 타입 안정성을 높이는 데 도움.
8. Prisma Date-Time 타입 처리 이슈 📅
- Prisma 모델에서 nullable과 날짜-시간 포맷 타입 지정에 주의 필요.
- 예: startTime: null | (string & tags.Format<"date-time">) 처럼 타입이 혼재될 때 에러 발생 가능.
- 관련 공식 문서와 마이그레이션 워크플로우(https://www.prisma.io/docs/orm/prisma-migrate/workflows/baselining) 참조 권장.
9. 이직과 퇴사 경험과 조언 💼
- 이직은 매우 신중해야 하며, 감정적인 충동에 의한 결정은 후회하기 쉽다는 경험 공유.
- 이직 초기 2주는 즐거울 수 있으나, 그 이후 불안감이나 후회를 겪는 경우 많음.
- 주변 지인 조언이나 신뢰할 수 있는 정보 수집 후에 결정할 것 권장.
10. Refresh Token 관리 및 다중 로그인 고려사항 🔄
- 다중 로그인이나 멀티 디바이스 대응 시 리프레시 토큰 관리가 매우 까다로움.
- 리프레시 토큰을 배열 형태로 저장하고 관리해 다양한 케이스 처리 필요.
- 일부 앱에서는 액세스 토큰과 리프레시 토큰을 분리하지 않고 단일 토큰만 사용하는 경우도 있음.
- MSA(마이크로서비스 아키텍처) 환경에서는 서비스별 접근권한용 프레시/액세스 토큰을 분리 관리하는 사례도 있음.
면접팁⚡
- Prisma와 TypeORM 차이점 및 마이그레이션 난이도: 실제 경험을 바탕으로 이야기하면 신뢰도 상승.
- JWT 인증 및 Refresh Token 관리 전략: 어떤 방식이 언제 적합한지 이해하고, 단점과 대안을 설명할 수 있으면 유리.
- TDD와 테스트 자동화에 대한 현실적인 고민: AI 테스트 자동화 트렌드 및 한계점을 함께 논하면 깊이 있는 인상.
- Kafka 장애 대비 및 Multi Schema 활용 개념: 고가용성 시스템 설계에 관심이 있음을 보여줄 수 있음.
- TypeScript 린트와 타입 안정성: 린트 설정을 어떻게 진행했는지, 팀 내 규칙 조율 경험도 활용 가능.
링크🔗
- Prisma Multi Schema 공식 문서: https://www.prisma.io/docs/orm/prisma-schema/data-model/multi-schema
- Prisma Baseline Migration 워크플로우: https://www.prisma.io/docs/orm/prisma-migrate/workflows/baselining
#Python#Django#FastAPI#Prisma#TypeORM#TDD#AI개발#JWT#Redis#Kafka#TypeScript#ESLint#퇴사#RefreshToken