https://sync.day
(YC투자를 받은 회사로, 현재는 폐업)
스마트 미팅 앱 Sync 전체 설계, 개발 및 유지보수
* 전세계 Timezone 에 대한 Time 연산 지원
* i18n 기반 다국어 지원
* Google Meet, Google Calendar, Zoom, Apple Calendar Integration 지원
* OAuth2 지원 - Google, Kakaotalk, Apple 로그인
* Multiple Social Sign in 기능 지원
* 여러 알람 채널들 지원
* Email, Line, Kakaotalk, Whatsapp, SMS (국내 - 알리고, 해외 - Twilio)
* Schedule 관리 기능 지원
* (Meeting) Event Item 에 대한 Table / Card view 지원
* minimum notice(최소 대기시간), buffer time, date overriding 기능 등등
* Scheduled Event (성사된 미팅) 에 대한 여러 관리 지원
* 기타 설정 (Color, Title, image
* Google / Apple 과의 연동 지원
* 국내외 결제 지원 - Bootpay 를 통한 PG사 결제 지원, Stripe 로 해외 결제 지원
전반
* 싱크데이 서비스 전체 설계, 개발, 유지보수 관리 등
* BDD 기반 Gitlab-Flow
* 전체 프로젝트 코드의 95%를 혼자 작성
* 전체 코드 대비 테스트 비율 40%, Coverage 100%, 총 테스트 파일 갯수 250개 이상, 총 unit test 2500 건 이상
• BI Tool(Redash) / 시스템 모니터링(Sentry, CloudWatch Metrics)을 통해 이슈를 추적하고 성능을 개선합니다.
• BDD, Design Pattern 기반 Software architecture 확장, legacy code 의 고도화
• 기타 전체적인 비즈니스의 요구사항을 파악하여 기술을 습득 및 적용합니다.
Backend
* OOP 기반 FRP 패러다임 적용을 위해 Angular / Nest.js 바탕 설계
* API
* RESTful API 설계 원칙 적용, http method 별 캐싱 전략 수립, framework 에 한계가 있어 Matrix Param Decorator 구현, TTFHW 원칙 등 적용.
* Multiple Social Sign in - Integration Context (OAuth2-Email-Phone Number Authorization 에 대한 회원 해석 문제) 해결
* RFC 문서를 참조해 CalDav 데이터 해석 구현
* Notification Pipeline
* Documentation 자동화(Compodoc) 및 Docs pipeline 구축
* 서비스 특징을 생각한 timezone 간 연산 지원 등
* coverage rate 약 40%
* OAuth2 에 대한 integration 연동을 context 에 따라 처리, 구현 (sign-in, sign-up, integrate, multi-social sign in 의 factor 에 대한 모든 combination context 에 대한 처리 등)
* SAST / DAST pipeline 에 통합, 구축
* Presigned url 제공
* RFC4918 RESTful API Style 기반 원칙 준수
* API Versioning + HATEOAS 에 대한 이해와 구현
* FFTHW, FFTPA 원칙을 준수한 사용자 최적 API
* SOLID 원칙 준수
* MVC, DTO, VO, CoR, RBAC 등 기초적인 패턴 적용 등
* RFC 3066 / RFC 3339 / RFC 5545 spec 을 준수한 Pattern Language 화된 설계 구현
* DB 설계 유지보수
* ACID 원칙 준수
* TypeORM-JPA spec 간 격차를 어떻게 해소할 것인지에 대한 전략 수립, 제안, 설계, 구현, 연구 등
* N+1
* Meta Model 이 해결한 문제를 Typescript 진영에서 어떻게 해결할 것인지 연구, 구현
* ORIM (Object-Relational Impedance Mismatch) issue 를 JPA-TypeORM 격차가 나는 와중에 어떻게 녹일 것인지 등
Frontend
* FE 의 경우 Fuse Template (https://angular-material.fusetheme.com/index.html) 을 기반으로 사용하였으나 요구에 맞는 개발에 따라 60% 이상 수정되었습니다.
* TailwindCSS, Angular Material, SCSS 활용 등
* Webpack analyzer 등을 통한 패키지 관리
* Responsive UI 구현: Flex, Grid, breakpoint 관리
* 여러 rendering 원칙 준수: Zoneless Problem - Component Interpolation, Signal syntax 등으로 해결
* 독립페이지의 경우 standalone component 로 구현
* 좀 더 나은 i18n 전략 수립, 구현: RTL(right to left)/LTR(left to right), Living Translation 등 요구사항 준수
Infra
* IaC: Gitlab 플랫폼 기반 GitOps Paradigm 바탕의 Terraform Code 로 인프라 유지
* API - ECS Fargate, Public/Private Subnet 별 구성, 개발환경별 modularized 된 코드로 구성
* Scheduler - nestjs/scheduler, node-scheduler
* Notification - AWS SNS with dead-letter Queue - SES/Lambda 의 Notification Pipeline 구성(WhatsApp, Kakaotalk, SMS with Twilio, SMS with 알리고)
* 보안 조치: VPN 서버 구축 (openvpn profile, Split Tunnel 설정 등), Nginx 설정을 통한 Geological Restriction 구현(dev 서버에만 적용)
* 비용최적화
* AWS Credit 소진 시기와 관련해 가격최적화 플래닝을 하였고 SavingsPlan 계획, 적용
* SP, RI 적용
* FE
* Angular 16 / Material Paradigm 기반 UI 설계, UX 의 경우 Skeuomorphism 을 추구했고, Web Vital 3 Core 문제를 의식한 component 배치, API 에서의 TTFHW 원칙 도입 등
* Tailwind CSS, Angular Material UI (CDK Library)
* i18n convention 수립, 적용했고 성공적으로 관리
* Zone Problem 한계적 해결 등
Issue tracking / team leading
* Agile Scrum Process 리딩, 이후 경영난으로 인원정리한 결과 소수정예 협업 방식으로 전환.
더보기