This page contains information related to upcoming products, features, and functionality. It is important to note that the information presented is for informational purposes only. Please do not rely on this information for purchasing or planning purposes. The development, release, and timing of any products, features, or functionality may be subject to change or delay and remain at the sole discretion of GitLab Inc.
Status Authors Coach DRIs Owning Stage Created
implemented @craig-gomes @ayufan @timzallmann @joshlambert devops non_devops 2020-10-21

아바타 및 콘텐츠 이미지의 크기 조정

현재, 모든 업로드된 이미지를 1:1로 표시하고 있습니다. 이는 당연히 이상적이지 않습니다. 성능을 크게 향상시키기 위해 이미지 크기 조정 기능을 백엔드에 추가하세요. 고려해야 할 이미지 크기 조정의 주요 영역은 아바타와 콘텐츠 이미지입니다. 이 구현의 MVC는 아바타에 중점을 두고 있습니다. 아바타 요청은 총 이미지 요청 중 약 70%를 차지합니다. 이번 MVC의 범위는 지원할 의도된 크기로 제한되어 있습니다. 콘텐츠 이미지 크기 조정은 크기와 기능을 고려해야 할 사항이 훨씬 많습니다. 이미지 크기 조정을 통해 성능을 향상시키는 동일한 목표를 가진 별도의 개발 노력이 완전히 가능합니다.

MVC 아바타 크기 조정

동적 이미지 크기 조정 솔루션을 구현할 때, 이미지는 동적으로 조정되고 최적화되어야 합니다. 나중에 새로운 대상 크기를 정의하더라도 동적으로 추가할 수 있어야 합니다. 몇 가지 메트릭 결과 중 일부가 우리가 현재의 로드 크기를 최대 95%까지 절약할 수 있다고 보여 성능상에서 큰 향상이 이루어질 것으로 예상됩니다. 초기 조사 결과, 약 1.65백만 개의 아바타가 업로드되어 80GB 크기를 차지하고 각각 평균적으로 약 48KB의 파일 크기를 갖고 있습니다. 초기 메트릭 결과, 가장 일반적인 아바타 크기를 1-3KB로 줄일 수 있다고 보고되어 현재 크기의 90% 이상을 절감할 수 있습니다. 우리는 MVC에서 애플리케이션 레벨 캐싱을 고려하지 않고, CDNs와 브라우저에 구현된 HTTP 기반 캐시에 완전히 의존할 것입니다. 하지만 이후에 이 결정을 재고할 수 있습니다. 특히 Self-Managed형의 경우, 아바타 크기 조정에 대한 성능 문제를 완화하기 위해 운영 피처 플래그가 구현되어 있습니다.

sequenceDiagram autonumber Requester->>Workhorse: 들어오는 요청 Workhorse->>RailsApp: 들어오는 요청 alt 모두가 참일 경우: 1.아바타가 요청됨, 2.요청된 너비가 허용됨, 3.기능이 활성화됨 RailsApp->>Workhorse: `send-scaled-img:` 요청 Workhorse->>Workhorse: Go 라이브러리를 사용한 이미지 크기 조정 Workhorse->>Requester: 조정된 이미지 제공 else 다른 모든 경우 RailsApp->>Workhorse: 일반적인 요청 시나리오 Workhorse->>Requester: 일반적인 요청 시나리오 end

콘텐츠 이미지 크기 조정

콘텐츠 이미지 크기 조정은 더 복잡한 문제입니다. 정해진 크기 제한이 없으며 고려해야 할 추가 기능 또는 요구 사항이 있습니다.

  • 동적 WebP 지원 - WebP 형식은 이미지 품질의 손실 없이 JPEG보다 평균적으로 30% 더 많은 압축을 달성합니다. 자세한 내용은 Google Comparative Study에 있습니다.
  • 첫 번째 GIF 이미지 추출하여 10MB 픽셀을 로드하지 않도록 함
  • 고해상도 화면에서 훌륭한 이미지를 제공하기 위해 장치 화소 비율을 확인
  • 이 글에서 설명한 것처럼 점진적 이미지로딩과 유사한 기능
  • 크기 및 선명도에 대한 크기 조정 권장 사항
  • 저장

아바타 크기 조정 구현은 Workhorse에 통합되어 있습니다. 콘텐츠 이미지 크기 조정에 대한 추가 요구 사항은 GraphicsMagik (GM) 또는 유사한 라이브러리의 더 많은 사용을 요구하며, 이를 Workhorse에서 분리해야 할 수도 있습니다.

반복

  1. ✓ 다양한 이미지 크기 조정 솔루션에 대한 POC
  2. ✓ 보안팀과 솔루션 검토
  3. ✓ 아바타 크기 조정 MVC 구현
  4. 배포, 메트릭, 모니터링
  5. 콘텐츠 이미지 크기 조정을 위한 기능 명확화
  6. 현재 이미지 크기 조정 구현과 새로운 솔루션 사이의 옵션 비교
  7. 콘텐츠 이미지 크기 조정 MVC 구현
  8. 배포, 메트릭, 모니터링

담당자

제안:

역할 이름
저자 Craig Gomes
아키텍처 진화 코치 Kamil Trzciński
엔지니어링 리더 Tim Zallmann
도메인 전문가 Matthias Kaeppler
도메인 전문가 Aleksei Lipniagov

DRI(담당자):

역할 이름
제품 Josh Lambert
리더십 Craig Gomes
엔지니어링 Matthias Kaeppler