목록전체 글 (13)
dansoon.log()
2025년 1분기 회고: 방구하기 프로젝트회사에서 1분기부터 시작된 '방구하기 프로젝트'가 드디어 첫 번째 마일스톤을 완료했다.오늘은 이 프로젝트를 진행하면서 경험한 기술적인 도전과 배움에 대해 정리해보려 한다. 방구하기 프로젝트방구하기 프로젝트의 핵심은 마이크로 프론트엔드 아키텍처 도입이었다.기존 서버에 Next.js로 만든 새 프로젝트를 통합하는 것이 목표였는데, 이 과정에서 다양한 기술적 과제들을 해결해야 했다.주요 과제는 기존 시스템과 새로운 Next.js 애플리케이션의 통합이었다.두 애플리케이션이 사용자에게는 하나의 일관된 서비스로 제공되어야 했다. 특히 라우팅과 인증 시스템 통합이 핵심 요소였다.결국 우리는 Module Federation을 활용해 런타임에서 두 애플리케이션을 통합하는 방식을..
들어가며24년은 2년 차 개발자로서 첫 이직을 성공했고, 서비스 회사에서 의미있는 성장과 서비스 기여를 할 수 있던 한 해였다.아직 부족함이 많은 주니어 개발자였지만,점차 서비스 개선에 대한 감을 익혀가며 개발자로서의 정체성과 성장에 대해 깊이 고민했던 시간이었다.새로운 환경에서의 도전과 업무 외 학습을 통해 많은 것을 배웠고, 이제 그 시간들을 돌아보며 내년을 준비하고자 한다.올해의 업무 :: 새로운 업무 환경과 낯선 코드처음 마주한 레거시 환경Vue 3, React 18과 같은 최신 프레임워크를 사용하다가 이직 후 받은 첫 충격은 Node.js 6 버전을 사용한다는 점이었다.ES6 이후 문법도 지원하지 않는 환경에서 생소한 PHP 코드와 순수 JavaScript로 제품을 개선해야 하는 상황이었다.서비..
들어가며프론트엔드 프로젝트의 규모가 커지면 효율적인 코드 구조화의 중요성이 더욱 부각되기 마련이다.단순한 기능 구현을 넘어 시스템 아키텍처가 비즈니스 요구사항의 변화에 얼마나 유연하게 대응할 수 있는지가 프로젝트의 장기적 성공을 좌우하는 핵심 요소로 자리잡았다.이를 해결하기 위해 구조화된 설계와 디자인 패턴을 적용하는 것이 현대 프론트엔드 개발의 주요 트렌드로 자리잡고 있다.컴포넌트 기반 아키텍처, 상태 관리 패턴, 모듈화 등 다양한 접근 방식이 존재하지만,대규모 애플리케이션에서는 보다 체계적인 구조화 방법론이 요구된다.최근 PHP와 Vue로 작성된 레거시 애플리케이션을 Next.js로 마이그레이션하는 과정에서,우리 팀은 일관된 개발 패러다임을 확립하기 위해 Feature-Sliced Design(FSD..
들어가며최근 같이 교류하던 분들과 친한 개발자 분이 이렇게 물어봤다."이 @components 같은 거 왜 쓰는 거예요? 어떤 이유가 있죠?"솔직히 처음에는 그냥 "깔끔해 보여서" 쓰기 시작했다.하지만 수년간 다양한 규모의 프로젝트를 진행하면서, 이 패턴이 단순한 미적 선호를 넘어 코드 품질과 개발 효율성에 상당한 영향을 미친다는 것을 깨달았다.이 글에서는 모듈 별칭(alias)과 barrel 패턴의 기술적 이점, 구현 방법, 그리고 실제 대규모 프로젝트에서의 활용 사례를 심층적으로 분석해보고자 한다.1. 모듈 별칭(Alias)의 기술적 필요성1.1 상대경로의 구조적 문제점프로젝트 복잡도가 증가하면서 상대경로 방식은 다음과 같은 심각한 문제를 야기한다:// 중첩 깊이가 깊어질수록 발생하는 가독성 문제im..

"더 깊이 알고 싶다", "이게 최선일까?", "정말 이게 맞는 걸까?"개발자로서 끊임없이 마주치는 이 질문들에 대한 답을 찾을 수 없겠지만,정해진 길이 없는 개발자의 성장 경로에서, 혼자만의 학습이 아닌 새로운 방향을 찾고 싶었다.그렇게 시작한 10주간의 여정이 마무리되었다. 다양한 경력을 가진 팀원들과 함께하며 새로운 시각을 발견했다.밤늦게까지 이어진 과제와 코드 리뷰 시간은 단순한 기술 공유를 넘어 서로의 관점을 이해하는 소중한 시간이었다.'이런 식으로도 생각할 수 있구나!' 하는 깨달음의 순간들이 쌓여갔고,열정 넘치는 코치님들의 멘토링은 기술 외적인 부분에서도 값진 배움을 선물해주었다. 처음엔 모든 과제를 완벽하게 해내겠다는 욕심을 부렸지만,회사 업무와 병행하는 게 쉽지만은 않았다.하지만 31..
1. 문제AWS를 활용한 CI/CD 파이프라인 구축 프로젝트를 진행했다.다양한 클라우드 서비스 중에서 AWS를 선택한 이유는 실제 업무 환경에서 가장 널리 사용되고 있으며,S3와 CloudFront의 조합이 비용 효율적이면서도 확장성이 뛰어나기 때문이다.AWS 아키텍처는 S3 버킷을 기반으로 정적 웹사이트 호스팅 설정을 구성하고, CloudFront를 통한 글로벌 CDN 배포망을 구축했다.IAM을 통해 최소 권한 원칙에 따른 보안 설정을 적용하고, GitHub Actions를 활용하여 완전 자동화된 배포 파이프라인을 구현했다.특히 GitHub Actions 워크플로우를 통해 코드 변경 시 자동으로 빌드, 테스트, 배포가 이루어지는 시스템을 구축했으며, 시크릿 키와 환경 변수의 안전한 관리 체계를 마련했다..
1. 프로젝트 개요이번 주에는 프론트엔드 애플리케이션의 테스트 시나리오를 직접 작성하고 구현하는 작업을 진행했다.처음 과제를 접했을 때, 단순히 테스트 코드를 작성하는 것을 넘어서 이 과정이 개발 품질 전반에 얼마나 큰 영향을 미치는지 깨닫게 되었다. 특히 사용자 관점에서의 신뢰성 확보와 엣지 케이스 처리의 중요성을 직접 체감할 수 있었다.2. 테스트 설계 과정팀 내에서 처음 테스트 전략을 논의할 때, 다양한 의견이 존재했다.Unit 테스트와 E2E 테스트를 조합해야 한다는 의견,Unit 테스트와 Integration 테스트의 조합이 효율적이라는 의견, 모든 단계의 테스트가 필요하다는 의견까지, 각자의 경험과 프로젝트 배경에 따라 접근 방식이 달랐다.여러 논의 끝에 Integration 테스트를 중심으로..
1. 문제이번 주 과제는 지난주에 리팩토링한 프로젝트 구조를 바탕으로 테스트 코드를 작성하고, FSD 패턴과 상태 관리에서 미숙했던 부분을 개선하는 것이었다. 이 과정에서 몇 가지 문제와 고민이 생겼다.테스트 범위 결정의 어려움주요 기능을 모두 테스트하려다 보니 테스트 범위를 어디까지 설정해야 할지 고민이 많았다. 특히 유틸리티 함수와 커스텀 훅의 테스트부터 시작해, 전체 흐름을 확인하는 통합 테스트까지 커버하려고 하니 테스트 케이스 관리와 코드 작성이 생각보다 오래 걸렸다.데이터 상태의 독립성 유지각 테스트가 독립적으로 작동하도록 테스트 데이터와 핸들러를 설정하는 방법을 고민하게 되었다. 특히 mock 데이터를 기반으로 테스트를 진행하면서 테스트 간 상태 초기화와 독립성을 어떻게 유지할지 어려움이 있었..