

사실 이번주도 평범하게 챕터에 대한 학습한 내용에 대한 큰 틀만 작성하려고 하였습니다.
아무런 관련없이 이 글을 찾아 들어오시는 분들에게는 후기가 더 중요한 내용이 될 것 같아 항해 플러스 프론트엔드 과정에 대하여 간략하게 나마 챕터별 내용과 어떤 분들에게 도움이 될 지에 대한 것을 남겨 보려고 합니다.
수료식에서 많은 분들이 저와 같은 경험을 하신 것 같아 다른 분들도 좋은 경험이 되었으면 하는 마음에 후기를 먼저 작성해봅니다.
저는 과정 시작 바로 전주에 신청하게 되어 거의 최대 금액으로 신청했었습니다.
금액을 보면 사실 적지 않은 돈이라고 처음에 느껴졌었습니다. (코치님 초대 코드로 일부 할인을 받았습니다.)
그런데, 생각해보면 월~목 저녁 8시부터 10시까지, 늦게는 새벽까지도 팀 토의와 시니어 코치님들 멘토링을 받고, 토요일은 오후 내내 개념에 대한 교육, 커뮤니티를 경험 할 수 있다는 점을 그것도 무려 10주 동안이나 받는 다는 것은 시니어 분들 노임 단가 생각해보면 이게 단체여서 가능한 과정이구나 싶은 생각이 들었습니다.
그리고 무엇보다 거의 정가를 친 입장에서, 내가 이 돈을 주고 과정에 들어왔는데 하는 생각에 더 열심히 과제를 해결하는데 참여하게 되고, 뭐라도 하나 더 배워가자 하는 마음이 절로 들게 되는 이점도 있었습니다.
5기 까지 오면서 커리큘럼에 대한 완성도는 매우 높았고, 내가 얼마나 투자하여 뽑아가는 지만 달라진다고 생각이 되었습니다.
무엇보다 저는 풀스택 개발을 하고 있는 입장에서 1~2주차에 아 프론트 5기가 이정도면 백엔드 9기 과정도 들어보고 싶은데? 하는 마음이 들었었고, 가장 할인율 높은 시기에 바로 백엔드까지 같이 결제를 하게 되었습니다.
아마 궁금해서 이 글을 읽어보시고 다음 6기로 진행을 하시는 분들은 백엔드 과정 9기에서도 고군분투하고 있는 저를 보실 수도 있으실 것 같습니다.
과정 수료생도 다른 분들께 20만원 할인을 제공해드릴 수 있어 코드를 남겨둡니다.
※ 추천코드 : CdNkjs
※ 신청링크 : https://bit.ly/3JV04NX
항해 플러스 프론트엔드 과정을 시작하면서 몇가지 목표가 있었습니다.
Velog를 항해플러스 시작하면서 처음으로 작성해보게 되었고, 7주차 테스트 코드에서 약간 어려워 지기 전까진 2일마다 꼬박 기록을 해봤습니다. (테스트 코드 부터 과제에 치여 글쓰기는 살짝 꺾였습니다.)

그래도 엉덩이 붙히고 2시간 이상씩은 코딩과 개념공부에 집중을 열심히 해서 붉은 잔디도 빼곡하게 채웠습니다.
(3일차는 종료 실수, 중앙에 하루는 시스템 에러, 마지막 날 잔디는 확인 불가)

과제 또한, 다행하게도 모두 통과하여 가장 높은 등급에 뱃지를 획득 할 수 있었습니다.
잔디나 뱃지, 학습 시간 측정 등 나름 시스템적인 부분에서 알게 모르게 동기부여가 되는 것들이 있었습니다.
그리고, 생각에도 없던 회고상 수상..

(일부러 작게 올렸더니 피고상처럼 보이네요.)
과정을 진행하면서 이과지만 글을 조금이라도 써보자 하는 마음에 매주 제출했던 WIL을 좋게 봐주셔서
성심당 빵만 전달하고, 박수만 치다 올 줄 알았던 수료식에서 상장을 받게 되었습니다.
함께 해주셨던 팀원들과 메이트님들, 그리고 과정을 알차게 제공해주신 코치님들과 운영진분들께 감사하다는 말씀 남기면서 프론트엔드 과정 마지막 회고를 마치도록 하겠습니다.
한달 쉬고 백엔드 과정으로 다시 돌아오겠습니다. 😊
이번 챕터는 사용자 입장에서 어플리케이션 성능을 최적화 하는 방법을 배우는 과정이었습니다.
9주차는 약간 쉬어가는 주차라고 느껴지는 과정이었지만, 10주차는 고민을 많이하고 시간을 쏟아야 하는 과정이었습니다.
어쩌면 현업에선 굳이 하면서 외면했던 부분일 수도 있고, 사용자의 요청이 많지 않은 환경이라면 선택과 집중을 위해 우선순위를 낮게 관리하는 분야라는 생각이 들었습니다.
다만 개발자로써, 그리고 언젠간 성능을 반드시 고려해야할 대규모 트래픽을 발생시키는 서비스를 개발할 것을 대비하여 정확하에 어느 부분에 최적화가 가능한 지를 알 수 있게 되는 과정이었다고 생각합니다.
챕터 구성
- Chapter 4-1. 인프라 관점의 성능 최적화
- Chapter 4-2. 코드 관점의 성능 최적화
9주차는 프론트엔드 개발자 수준에서 알아야 할 DevOps 환경에서의 성능을 최적화하는 것을 목표로 했습니다.
인프라 단계에서의 최적화 및 프론트엔드 배포 파이프라인의 이해, CDN을 통한 캐싱전략을 수립하는 것을 단계적으로 구현하는 것을 각각의 항목으로 진행이 되었습니다.
10주차는 코드 레벨에서의 성능 최적화를 구현하고, 성능 측정 도구를 활용할 수 있고, 바닐라 JS 프로젝트, React 프로젝트를 최적화하여 배포하는 것을 목표로 하고 있습니다.
먼저 9주차 과정의 경우에는, 원래 현업에서 하던 업무와 크게 다른 점이 없어 기술적인 부분으로 크게 성장한 것은 아니지만, 중간 중간 찾아보면서 배포 파이프라인을 구성하는 하는 단계에서 주로 쓰는 자동 배포환경에 대한 나만의 템플릿 yml을 구축해논 점의 성과가 있었습니다.
프로젝트의 코드가 수정되어 main 브랜치에 병합될 경우 git actions가 동작합니다.
.yml에서 *.md 파일은 예외처리하여, 단순 README.md 수정은 git actions 가 트리거 되지 않도록했습니다.
on:
push:
branches:
- main
paths-ignore:
- '*.md'
workflow_dispatch:
Git actions으로 가상 머신의 ubuntu-latest 환경에서 빌드된 정적 파일들을 S3 Sync로 배포가 됩니다.
npm ci 로 package-lock.json으로 의존성을 설치하고, npm run build로 프로젝트를 빌드합니다.
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install dependencies
run: npm ci
- name: Build
run: npm run build
정적 빌드된 파일을 aws s3 sync 로 저장된 AWS_ACCESS_KEY와 같은 github secrets에 저장된 환경변수를 이용하여 배포합니다.
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: ${{ secrets.AWS_REGION }}
- name: Deploy to S3
run: |
aws s3 sync out/ s3://${{ secrets.S3_BUCKET_NAME }} --delete
S3 배포 이후, CloudFront 엣지 로케이션에 캐싱된 이전 파일들을 무효화합니다.
aws cloudfront create-invalidation을 이용해 이전에 저장된 캐싱 정보를 무효화합니다.
- name: Invalidate CloudFront cache
run: |
aws cloudfront create-invalidation --distribution-id ${{ secrets.CLOUDFRONT_DISTRIBUTION_ID }} --paths "/*"
사용자는 S3 혹은 CloudFront 도메인으로 접근이 가능합니다.
10주차 과정은 만들어진 Vanilla js 프로젝트를 성능 측정 도구를 활용하여 코드 상에서의 문제를 해결하는 basic과정과 더미 API와의 통신하는 과정이 포함된 react-vite 프로젝트를 바탕으로 불필요한 리랜더링을 일으키는 상태관리를 해결하는 advanced과정을 숙달했습니다.
최고의 개발자 갓성진 ,, 10주동안 정말정말 고생 많았어요~!!
성진님이라면 백엔드 과정도 멋지게 해내실거라 믿어 의심치 않습니다🥹
(기왕 2번째 항해 하는김에 백엔드 때는 팀장도 해보세요,,ㅎ 추천)