no image
Frontend Fundamental 모의고사 2회차 회고
토스에서 진행하는 frontend fundamental 모의고사 1회 차와 2회 차를 모두 참여하였다. 참여했던 이유는 단 하나다. 다른 프론트엔드 개발자들은 어떤 코드를 지향하는 것인지, 어떤 방향성을 갖고 코드를 작성하는지 궁금했다.무엇이든지 배울 점들이 있을 것 같아서 신청을 했고, 운이 좋게 2회 모두 참여할 수 있었다. 1회 차 모의고사1회 차 모의고사 때 주어진 과제는 실제로 이전에 풀어보았던 과제가 출제되었다. 과제의 난이도는 어렵지 않았지만, 토스에서 보고자 했던 것은 확장성 있는 코드와 유지보수가 쉬운 코드인지 보는 것이었다. 확장성 있는 코드와 유지보수가 쉬운 코드는 내 나름대로 정의를 가지고 풀어 나아갔다. 그럼에도 많은 궁금증과 고민이 있었고, 이것들을 품은 채, 라이브 해설강의를 ..
2026.03.28
no image
메인스레드 쉬는 시간 압수하기
브라우저의 메인 스레드는 언제나 바쁘다현대 웹 애플리케이션, 특히 복잡한 UI와 수많은 서드파티 스크립트(GTM, Ads, Maps 등)를 품은 페이지에서 메인 스레드 블로킹은 필연적입니다. 메인 스레드가 막히면 TBT(Total Blocking Time)가 치솟고, 사용자의 첫 입력 지연(FID)이 악화됩니다. 초기 렌더링에 당장 필요 없는 작업들을 어떻게 영리하게 뒤로 미룰 것인가?그 해답으로 적용했던 requestIdleCallback에 대해서 정리하고자 합니다. requestIdleCallback은 어떻게 동작하는가?우리가 매일 사용하는 웹 브라우저는 겉보기에 단순해 보이지만, 사용자에게 끊김 없는 화면을 보여주기 위해 1초에 60번(60Hz 기준) 엄청난 속도로 화면을 다시 그립니다. 이 한 ..
2026.03.08
no image
First Load JS 축소 및 번들최적화 - 시즌 2
지난번 포스트를 작성하고, 꽤 시간이 흘렀다. 이번 시즌에는 내가 잘못 알고 있던 점들과 새롭게 배운 사실들, 그리고 개선 포인트들을 기록해보려고 한다. https://yeomyeom.tistory.com/148 First Load JS 축소 및 번들 최적화 - 시즌 1회사 프로젝트의 개선 항목 중에서 입사를 하고 나서부터 오늘날까지 간곡히 해결하고 싶었던 문제가 있었다. 바로 홈 화면에서의 First Load JS를 줄이는 것이었다. 입사 당시, 회사 서비스의 속도yeomyeom.tistory.com(지난 시즌의 글은 위에서 확인할 수 있다.) 지난 글의 마지막을 보면, 더 이상 개선을 할 수 있을지 의문이 든다고 하면서 마무리를 했었다.하지만, 이번 개선 작업을 마무리하고 난 후에 지난 시즌의 결과..
2026.01.22
no image
First Load JS 축소 및 번들 최적화 - 시즌 1
회사 프로젝트의 개선 항목 중에서 입사를 하고 나서부터 오늘날까지 간곡히 해결하고 싶었던 문제가 있었다. 바로 홈 화면에서의 First Load JS를 줄이는 것이었다. 입사 당시, 회사 서비스의 속도는 매우 느렸다. 성능이 좋은 맥북 프로 m2로도 조금 답답한 느낌이 들 정도였다. 이렇게 생각해도 될지 모르겠지만, 회사 프로젝트가 "황금 고블린"같은 느낌이 들었다.경험치를 올린 사냥터가 아주 많은 프로젝트라고 생각했기 때문이었다. 느리다는 것도 렌더링이 느리거나, 로딩이 길거나, 반응속도가 느린 것과 같이 다양한 부분에서 측정이 가능했고, 회사의 서비스도 다양한 측면에서 느리다고 말할 수 있었다. 서비스에 가장 먼저 접근하게 되는 홈 화면의 First Load JS는 올해 1월 경만 해도 76..
2025.11.18
no image
리렌더링 최적화 - 2편
안녕하세요~~👋👋 여러분 잘 지내고 계신가요? 이제 슬슬 봄이 다가오고 있어요..!!! 🎉모두들 따뜻한 봄을 지내시길 바랄게요~ 문제상황저는 회사에서 경기 기록에 선수 정보를 추가/수정할 수 있는 기능을 맡게 되었어요!이미 구현된 부분이 있었고, 해당 부분에 추가적인 기능을 넣는 상황이었어요. 하지만, 왜인지 모르게 경기 기록 수정 모달이 굉장히 늦게 띄워졌어요..!!! --> 문제 상황 아래 영상을 확인해보시면 아시겠지만, 2초정도 늦게 모달이 띄워졌어요!  콘솔을 찍어보면서 원인을 찾아보기 시작했어요..! (6번이 모달, 7번이 경기로그입니다.) 문제는 모달이 열릴 때와 닫힐 때, 모든 기록들이 찍히는 것을 확인할 수 있었어요..!!!모든 기록들이 리렌더링이 되는 상황이었습니다! 결론부터 얘기하..
2025.02.17
no image
Next.js의 서버
안녕하세요~모두들 잘 지내고 계신가요?  오늘은 디프만 활동을 하면서 제가 부족하다고 느낀 부분을 제대로 정리해보기 위해서 왔어요!! 디프만 활동을 하면서 저희 팀은 서비스의 빠른 초기 렌더링과 팀원들의 Next.js 역량 증진을 위해서Next.js 프레임워크를 선택하게 되었어요. 백엔드 팀원들과 얘기를 나누던 중, Next.js의 "서버"는 백엔드 개발자들이 흔히 얘기하는 서버와 어떤 차이가 있고, 왜 존재하는지 질문을 했었어요. 저는 이 내용을 자신있게 대답하지 못 했고,,, 바로 찾아보고 다시 머릿속에 넣고자 했어요..🥲🥲 Next.js우선 Next.js는 무엇일까요?Next.js는 React 기반의 프레임워크로, 클라이언트와 서버의 경계를 넘나들며 동작할 수 있는 풀스택 프레임워크입니다. 특히..
2025.01.27
no image
리렌더링 최적화 - 1편
저는 지금 다니는 회사에 올해 1월에 입사를 했습니다.입사하기 전, 저만의 목표를 잡았었습니다. 바로 저희 서비스의 성능을 개선하기..!! 였습니다. 성능을 개선해야 하는 부분은 여러가지가 있었습니다. LCP 최적화, 서버 사이드 렌더링으로 인한 일부 페이지 렌더링 속도 저하, 리렌더링 최적화 등이 있었습니다. 그 중에 오늘은 리렌더링 최적화 1편으로 찾아왔습니다.왜 1편이냐면.. 최적화해야하는 부분이 정말 여러곳이 있는데, 1편에는 스크롤과 관련된 리렌더링 이슈를 가져왔어요.     문제 상황바로 본론으로 들어가보겠습니다.아래의 영상은 문제 상황을 녹화한 영상인데요. 스크롤을 할 때마다, 최상단의 헤더(AppBar 컴포넌트)가 지속적으로 렌더링이 되는 문제가 있었어요.그리고 더 이상했던 점은 렌더링이 ..
2025.01.26
no image
토스페이먼츠 결제 연동하기
안녕하세요..!!여러분 잘 지내고 계신지 궁금하네요^^ 짧은 휴가에서 복귀하고 회사에서 토스페이먼츠 결제 연동 업무를 할당받았어요! ☺️☺️ 사내 서비스 중에서 티켓을 구매할 수 있는 기능이 생겨서 이를 토스페이먼츠 SDK를 활용해서 구현하기로 결정했었어요. 결제 위젯과 결제창이 있는데요! 저희는 결제창을 선택했어요..!결제창으로 토스페이먼츠 결제 연동하기 카드/간편결제 통합결제창 연동하기 | 토스페이먼츠 개발자센터토스페이먼츠 카드/간편결제 통합결제창을 연동하는 방법이에요. 구매자가 결제창에서 결제수단, 결제 정보를 선택한 뒤에 카드 또는 간편결제 앱으로 이동해요.docs.tosspayments.com토스에서 아주 친절하게 가이드라인을 제공해줘서 정말 쉽게 구현할 수 있었어요!! 😎😎 하지만, 중간에..
2025.01.14
no image
[Next.JS] Image 컴포넌트
Next.JS에서는 특별한 기본 제공 이미지 컴포넌트가 있습니다.바로 컴포넌트입니다! 이미지를 보여줄 때, 단순히 태그를 사용하는 것이 아니라,Next.JS에서 제공하는 컴포넌트를 사용하면 이미지를 더 최적화된 방식으로 출력하도록 도와요. 예를 들어, lazy loading을 적용하여 보일 때만, 불러옵니다. 위의 동작은 추가적인 설정없이 자동으로 해줍니다.lazy-loading이 되면 안되는 이미지도 있습니다! 예를 들면, header에서 항상 보이는 이미지/아이콘 같은 경우에는priority 속성을 추가해서 항상 우선적으로 보이도록 설정할 수 있습니다. 반응형 이미지를 적용하는 과정도 단순화할 수 있어요. 그래서 컴포넌트를 사용하는 것이 좋습니다. 그리고, Image를 사용하면 이미지의 확장자..
2024.12.01