2025년 돌아보며 회고록을...
2025-11-26

벌써 2025년 11월이 되었습니다. 새해 목표를 세웠던 1월이 엊그제 같은데, 회사 생활과 대학교 공부를 병행하며 정신없이 달려오다 보니 시간이 정말 빠르게 지나갔음을 실감합니다. 지난 한 해 동안 겪었던 도전적인 경험과 개발자로서의 성장의 순간들을 기록해 보려 합니다.
1. 홀로 팀을 이끌었던 4개월
2024년 9월, 함께하던 개발팀원들이 모두 퇴사하는 상황을 맞았습니다. 12월까지 4개월간 주니어 개발자로서 홀로 개발팀을 운영해야 했던 이 경험은 저에게 엄청난 도전이었습니다.
SW마이스터고 재학 당시에는 웹 프론트엔드인 React와 Next.js를 주로 다루었지만, 팀 부재라는 환경은 저를 빠르게 성장시켰습니다. WebView와 WebSite는 기본이고, ML(Python), App Native(Kotlin, Swift), 그리고 React-Native까지 개발 영역을 넓혀갔습니다.
전문가와 같이 깊게 배우지는 못했어도 이 기간은 저를 **'하나의 전문 분야만 아는 개발자'**에서 **'다양한 분야의 기초 지식을 갖춘 전천후 개발자'**로 탈바꿈시켰습니다. 마치 리그 오브 레전드에서 여러 라인을 소화할 수 있는 플레이어처럼, 이제 어떤 문제가 발생하더라도 "서버 문제일까? 아니면 클라이언트 쪽 문제일까?" 와 같이 큰 시스템의 흐름을 빠르게 파악하고 문제의 핵심을 짚어낼 수 있는 능력을 얻게 되었습니다.
팀장님과 협업과 보안 지식의 습득
이후 연차가 높으신 팀장님이 합류하시면서 더욱 체계적인 성장이 시작되었습니다. 팀장님과는 웹 지식의 이론적 부분부터 구현 로직까지 깊이 있는 대화를 나누며 이해하지 못했던 부분을 해소할 수 있었습니다. 특히, 다른 회사 사례와 함께 보안 이슈 대처 방법을 알려주신 것이 큰 도움이 되었습니다.
대표적으로 SMS API 무한 호출(DoS 공격) 방어 경험은 주니어로서 접하기 힘든 중요한 학습이었습니다.
📢 SMS API DoS 공격 대응 및 보안 강화
저희 서비스는 VPN과 Bot을 이용한 DoS(서비스 거부 공격) 시도에 지속적으로 노출되었습니다. **DoS(Denial of Service)**는 한국어로 **'서비스 거부'**라는 뜻으로, 서버에 과도한 트래픽을 범람시켜 웹 사이트나 리소스 이용을 마비시키는 공격을 말합니다.

이전에는 전화번호가 바뀌면 로직이 초기화되어 API를 무한 호출할 수 있는 취약점이 있었습니다. 팀장님의 조언에 따라, 단순히 번호나 IP를 차단하는 수준을 넘어 보안을 강화했습니다.
구현 방법
finger-print (지문 값), device UUID, clientIp 등 기기 고유값들을 활용하여 사용자 요청의 유효성을 검증하는 로직을 추가했습니다.
1// api/send-sms.api.ts2// 요청 시 기기 고유값을 헤더와 바디에 포함하여 서버에서 검증 로직 추가3import axios from 'axios';4import { useMutation } from '@tanstack/react-query';5// ... (생략)67interface IFetchSmsCodeRequest {8 fingerPrint: string; // 클라이언트 지문 값9 deviceUUID: string; // 기기 고유 UUID10 phone: string; // 폰 번호11 deviceId: string; // device id12 clientIp: string; // 클라이언트 IP 주소13}14// ... (생략)
이 방법 역시 완벽하지는 않겠지만, 이전에 비해 서비스 보안이 크게 강화되었다는 점에서 의미 있는 성과라고 생각합니다. 이 방법 이후 DoS 공격이 들어온 적이 아직은 없습니다.
2. AI Tool을 활용한 학습과 기술 변화 대응 🛠️

2025년은 ChatGPT, Claude, Gemini 등 다양한 LLM AI가 시장에 등장하며 AI의 중요성이 더욱 커진 해였습니다. 저는 이 변화를 **'성장의 기회'**로 삼았습니다.
회사 업무 중 에러가 발생하면 AI의 도움을 받아 빠르게 해결하곤 했으며, 이를 새로운 기술을 익히는 학습 도구로 적극 활용했습니다.
- Flutter 도입: 회사에서 Flutter 학습을 요청받았을 때, AI에게 Dart 언어와 Flutter에 대해 질문하며 간단한 하이브리드 앱을 개발했습니다.
- 개인 프로젝트: 최근에는 개인 프로젝트를 위해 AI의 도움을 받아 Golang으로 백엔드 분야에 도전하며 지식의 폭을 계속 넓히고 있습니다.
AI 발전으로 학습 환경은 훨씬 좋아졌지만, 한편으로는 AI로 인한 인력 감축 뉴스(빅테크 인력 감축 현황 표 이미지 인용)를 접하며 개발자로서 지속적인 성장의 중요성을 다시 한번 생각하게 되었습니다.
(출처: https://www.mk.co.kr/news/it/11453978 - 각 AI발 미국 빅테크 인력 감축 현황 표)
3. React-Native에서 Flutter로
저희 회사의 하이브리드 앱 중 하나를 React-Native에서 Flutter로 마이그레이션하는 중요한 작업을 수행했습니다. 기존 Native 앱 업데이트가 자주 이루어지지 않아 버전 차이가 커졌고, 이를 해결하기 위한 방안이었습니다.
TypeScript만 사용하던 저에게 Dart 언어는 처음에는 낯설었지만, AI와 팀장님의 도움 덕분에 무사히 작업을 마무리할 수 있었습니다.
이 과정에서 가장 기억에 남는 것은 OAuth 구현 방식의 차이를 깨달은 것입니다.
OAuth 구현 방식
- 웹(Web): OAuth 연결 시 반드시 **
Redirect URL**을 통해 토큰과 응답을 받아와야 합니다. - 앱(Native): 카카오톡, Apple OAuth 같은 경우, 시스템 서비스를 이용하기 때문에 웹사이트 접근 없이도 인증 값을 받아올 수 있었습니다.
이 경험을 통해 웹 개발자로서 시작했던 제가 모바일 앱 환경에 대한 이해도를 크게 확장할 수 있었습니다.
성장을 향한 다짐

작년에는 바쁜 일정으로 인해 기록을 많이 남기지 못했지만, 2025년 회고록을 통해 제가 얼마나 많은 것을 경험하고 성장했는지 돌아볼 수 있었습니다.
올해는 AI를 활용해 다양한 분야를 경험하고, 모르는 부분은 AI와 함께 깊이 있게 공부하여 제 자신을 계속 성장시키는 개발자가 되어야겠다는 마음가짐을 더욱 확고히 할 수 있었습니다.
부족하지만 긴 글 읽어주셔서 감사합니다. 다들 연말 잘 마무리하시고 새해에도 건강하시고 행복하시기를 기원합니다.