RECENT POSTS

최근에 작성한 글

01 / 03

전체 글

전체 보기

안 된다고 하는 개발자의 속사정

1. 업무 상황별 담담당자 찾기

1. 웹 페이지의 데이터를 수정할 때

🍀데이터를 수정하거나 삭제하는 경우
서버에 저장된 데이터를 선택적으로 가져오는일은 백엔드 개발자가 처리 > 이후 데이터를 원하는 형식으로 화면에 보여주기 위해 수정하거나 삭제하는 일은 프론트가 처리
🍀새 데이터를 추가하는 경우
관리자 페이지 + 쇼핑몰 핫딜 화면의 프레젠테이션 로직 개발 : 프론트엔드 개발
관리자 페이지 + 쇼핑몰 핫딜 기능의 비즈니스 로직 개발 : 백엔드 개발
🍀정적 애셋과 동적 애셋을 변경하는 경우
애셋 : 웹 페이지를 구성하고 작동하는데 사용되는 다양한 파일
정적 애셋 변경
정적 애셋 : 프로그램 코드와 같은 폴더에 있음.
동적 애셋 변경
관리자가 직접 등록 및 삭제할 수 있도록 웹 페이지에 기능을 개발

2. 웹 페이지 표시 속도가 느릴 때

일반적으로 속도 이슈는 백엔드 개발자가 처리

🍀서버의 응답이 느린 경우
서버가 처리해야 하는 데이터의 양이 많을 때 발생
⇒ 리팩터링(코드 구조 재조정)을 통해 코드 최적화 또는 스케일 업 / 스케일 아웃으로 서버의 규모 조정
스케일 업 : 서버의 CPU 나 메모리를 업그레이드
<장점>
상대적으로 쉽다
적은 관리 이슈
데이터 정합성 이슈 발생 가능성이 낮다
<단점>
성능 향산 한계
서버 1대 분담 양 증가로 문제 발생시 타격 큼
서버 교체 또는 업그레이드 시 서비스 이용이 어려울 수 있음(다운타임)
스케일 다운 : 서버 대수를 늘려 분산 처리하는 것
<장점>
확장에 용이
확장 비용이 비교적 저렴
<단점>
관리가 어려움
노드를 병렬 구조로 연결하기 위해 아키텍처에 대한 높은 이해도 필요
데이터 정합성 이슈 발생 가능성이 커짐

 

서버 사이드 렌더링(SSR)

서버가 완성된 HTML 파일을 넘겨주서 웹 브라우저에 표시

⇒ 서버에서 처리하는 로직이 많아질 수록 HTML 파일을 완성하는 속도라 느려짐

 

클라이언트 사이드 렌더링(CSR)

하나의 웹 페이지만 불러오고 웹 페이지를 이동할 때 변경이 필요한 부분만 자바스크립트를 이용해 바꿔치기 = 싱글 페이비 애플리케이션(SPA)

검색 결과로 노출되는데 불리 > 웹 페이지 표시 후 데이터 부분만 다시 서버에 요청해 화면에 출력하기 때문 : 검색 로봇이 웹 페이지의 내용을 온전히 파악할 수 없음 (HTML 뼈대만 인식)

⇒ 검색 로봇이 요청한 경우 SSR 방식으로 완성된 HTML 파일로 응답하는 것으로 해결

SSR을 사용하는 대표적인 웹사이트

1. 커머스 플랫폼 ( Amazon, eBay, Shopify)
검색 엔진에서 잘 노출되는 것이 매우 중요 ⇒ 제품 페이지나 카테고리 페이지에 SSR을 적용해 사용자에게 빠르게 콘텐츠 제공
2. 뉴스 및 미디어 (The New York Times, BBC, The Guardian)
최신 기사를 사용자에게 즉시 보여줘야 하고 검색 엔진에서 빠르게 업데이트 된 콘텐츠가 반영되도록 하기 위해 SSR 활용
3. 소셜 네트워크 및 커뮤니티(Twitter, Reddit)
트윗이나 포스트처럼 사용자 생성 콘텐츠가 많은 서비스를 SSR을 사용해 콘텐츠를 검색 엔진과 사용자 모두에게 최적화된 형태로 제공
4. 부동산 및 여행 (Airbnb, Zillow, Booking.com)
검색 결과를 미리 렌더링하여 SEO를 강화하고 사용자 경험을 향상시킴
5. SaaS 및 생산성 도구 ( Notion)
SaaS(Software as a Service) 도구는 일부 대시보드 기능이나 공유 가능한 페이지에서 SSR을 사용해 더 나은 퍼포먼스를 제공
6. 검색 기반 서비스(Google Search(일부 콘텐츠), Bing)
검색 엔진이나 프로필 페이지는 검색 엔진 크롤러가 접근하기 쉽도록 SSR을 활용
CSR을 사용하는 대표적인 웹사이트

1. Gmail(구글 메일)
사용자가 작업할 때 페이지를 다시 로드하지 않고 빠르게 작업을 처리할 수 있음
2. Slack
시간 협업 툴에서 빠르고 동적인 UI 제공이 필수적
3. Facebook
초기 로드 후 사용자가 스크롤하거나 상호작용할 때 필요한 데이터만 로드하여 효율성을 높임
4. Netflix (로그인 후)
콘텐츠 탐색이나 재생 중 사용자 경험을 방해하지 않고 빠르게 작동
5. Twitter(로그인 후)
빠르고 즉각적인 사용자 경험을 제공하기 위해 CSR을 활용
⌛인스타그램에서 CSR 사용하는 이유
개인화된 콘텐츠 ⇒ 로그인 상태에서 개인 콘텐츠 제공
대규모 사용자 ⇒ 많은 양의 동적 콘텐츠를 제공하기 때문에 클라이언트에서 처리함으로써 서버 부하를 줄임
실시간 데이터 업데이트 ⇒ 실시간 데이터 처리는 클라이언트 쪽에서 처리

⭐SEO가 중요한 페이지(예: 공개 프로필 페이지)에서 부분적으로 프리 렌더링이나 Static Site Generation(SSG) 같은 방식이 사용될 수 있습니다.하지만 로그인 후 대부분의 화면은 CSR로 작동

❗SSG : 정적 페이지의 경우는 모든 유저에게 항상 동일한 화면이 보이기 때문에 한번만 생성한 이후에 어딘가에 저장해두고 필요할 때마다 로드

3. 모바일 앱 화면 포시 속도가 느릴 때

🍀프로그램 코드를 잘못 짠 경우
불필요한 코드가 화면에 보이지 않는 백그라운드에서 동작하고 있으면 다른 앱의 동작에 영향을 줌.
⇒ 푸시 알림 또는 유튜브 뮤직
🍀그래픽 효과를 많이 사용한 경우
🍀기기의 성능이 안좋은 경우

4. 화면에 나와야 할 것이 안 나올 때

🍀새로 업데이트한 요소가 나오지 않는 경우
우선 프론트엔드의 실수를 의심 ⇒ 새로 짠 코드가 다른 영역에 영향
새 버전으로 업데이트 했는데 웹 페이지 전체가 안나오는 경우 : 서버 오류
<서버 오류>
성능 문제
보안 문제
로직 문제
데이터 문제
외부 의존성 문제
인프라 문제
  • 테스트 주도 개발(TDD)[TDD 방법 및 순서]
    1. 실패하는 작은 단위 테스트를 작성
    2. 빨리 테스트를 통과하기 위해 프로덕션 코드 작성
    3. 테스트 코드 작성 > 실패 테스트가 없을 경우에만 성공 테스트 작성
    4. 새로운 테스트를 통과하기 위해 프로덕션 코드 추가 또는 수정
    5. 개발된 코드들에 대해 모든 중복을 제거하며 리팩토링
  • 테스트 코드를 먼저 작성하는 개발 방법론. ⇒ 순차적으로 실패하는 테스트를 작성하고 테스트가 실패할 경우에만 새로운 코드 작성
🍀업로드한 대용량 데이터가 나오지 않는 경우
데이터 자체의 문제일 수도 있음 ⇒ 잘못된 데이터가 운영 서비스에 바로 배포되지 않도록 운영 프로세스를 개선.

2. 개발자가 안 된다고 하는 진짜 이유

1. 새 기능 개발이 안된다고 하는 이유

  1. 계획보다 시간과 비용이 초과되기 때문
  2. 기능에 대한 의구심이 들기 때문

2. 효율성과 이익이 납득된 기능 개발도 안된다고 하는 이유

  1. 일정이 촉박하기 때문
  2. 인력이 부족하기 때문
  3. 운영상 이슈가 예상되기 때문

3. 기존 기능 수정이 안 된다고 하는 이유

  1. 다른 기능에 영향을 미치기 때문
  2. 서비스의 속도가 느려지기 때문
  3. 구조적으로 수정이 불가능하기 때문

4. 기존 기능 삭제가 안 된다고 하는 이유

  1. 외부 기관과 연동돼 있기 때문
  2. 눈에 보이지 않는 연쇄적 수정을 동반하기 때문