하드코어: 핵심 시스템에서 30,000줄 이상의 코드를 재구성하는 여정
01 먼저 이 시스템의 역사적 수하물에 대해 이야기합시다
우리의 광고 엔진은 이 재구성 전에 약 1년 반 동안 반복을 거쳤습니다. 초기 단계에서는 검색 시나리오를 대상으로 했습니다. 단일 비즈니스와 명확한 프로세스.
1. 비즈니스 시나리오가 복잡해지기 시작했으며 검색 광고 외에도 정보 흐름 추천 및 유사한 추천 시나리오도 지원해야 했습니다.
2. 광고 트래픽이 급격히 증가하기 시작하면 기능적 요구 사항을 충족하는 것 외에도 성능도 고려해야 합니다.
정리한 후에는 전체 엔진의 로직 대부분을 공유할 수 있으므로 메인 프레임워크를 정의하고 확장 가능한 부분을 추상화했습니다. 이러한 방식으로 각 시나리오는 해당 비즈니스의 특수성에 따라 특정 공용 인터페이스를 구현할 수 있습니다. 또한 성능 관점에서 일부 코드 가독성을 희생하고 일부 논리를 병렬화했습니다.
비즈니스가 발전함에 따라 검색 시나리오는 점점 더 많은 새로운 전략이 추가되면서 빠른 반복 기간에 들어가기 시작했으며 이때 우리의 기본 프레임워크는 점차 유연하지 않게 되었습니다.
1. 검색의 특수 논리와 호환되기 위해서는 이러한 논리를 우회하기 위해 다른 시나리오에서 다양한 if 판단을 추가해야 합니다.
2. 프레임워크가 명확한 구조를 잃으면 일부 전략의 구현이 계층적 구분과 연결 가능한 추상 디자인이 부족하여 점점 더 많은 광고 전략이 있습니다.

2019년 말에 전환점이 찾아왔습니다. 광고 사업의 특수성으로 인해 자연스럽게 트래픽이 감소하기 시작했습니다. 또한, 상품 운영팀은 2년차 업무 계획에 집중했습니다. , 이는 우리에게 이 재구성을 시작하기에 좋은 기간이었습니다.
공사 기간을 1개월로 정하고 결국 온라인만 예상보다 하루 늦게 접속하게 되었지만, 2건의 온라인 문제가 발생했지만 그레이스케일 기간 동안 제때 발견하여 복구하였고, 오프라인 문제는 발생하지 않았습니다. 사고가 발생했습니다.
02 리팩토링 전 어떤 준비를 했나요?
이번에 리팩토링한 코드의 양은 30,000라인이 넘을 정도로 매우 크며, 광고 시스템의 핵심 엔진 부분입니다. 출시 전에는 다음과 같은 어려움이 예상됩니다.
비즈니스 측면의 저항: 이러한 구조 조정은 장기적인 R&D 효율성을 가져올 수 있지만, 비즈니스 수입을 직접적으로 향상시킬 수 없으며 개발 주기가 너무 짧지 않을 것입니다. 어떻게 비즈니스 동료로부터 지원을 받을 수 있습니까? 2. 기술적 문제
: 리팩토링으로 인해 온라인 사고가 발생하면 회사에서는 어떻게 모든 사람을 가볍게 전투에 참여시킬 수 있습니까? 동시에 재구축 과정에 매우 많은 업무 반복이 산재해 있는 경우 배송 시간을 누구도 보장할 수 없으며 품질을 제어하기 어려울 것입니다.앞서 언급한 바와 같이: 비즈니스 반복으로 인해 광고 엔진의 주요 프레임워크가 흐려지고 수십 개의 광고 전략이 지저분한 구성으로 다양한 비즈니스 시나리오에 분산됩니다.
이 두 가지 문제점에 대응하여 우리는 한 달 전에 기존 사업을 정리하기 시작했고, 이전 코드를 읽고 이전 요구 사항 문서를 살펴보았습니다. 마지막으로 다양한 시나리오의 핵심 프로세스와 광고 전략을 하나의 A로 분류했습니다. 명확한 형태.
기술과 제품이 처음으로 우리 엔진 부분의 전체 그림을 명확하게 볼 수 있게 하고, 비즈니스의 복잡성과 현재의 기술적 병목 현상을 이해할 수 있게 해주는 것이 바로 이 테이블입니다.
▍리팩토링의 목표와 가치를 명확히 하고
모두가 문제점을 느낄 수 있도록 한 후, 우리는 이번 리팩토링의 두 가지 핵심 목표를 계획했습니다:
1. 메인 프레임워크: 메인 프로세스를 모듈화하고, 상위 및 하위 계층 프로토콜을 재정의하고, 각 레벨도 내부적으로 추상화되고 우수한 확장성을 갖도록 보장합니다.
2. 유연하고 구성 가능한 전략: 광고 전략은 비즈니스 의도에 따라 분류 및 추상화되며, 전략의 실행 조건은 동적으로 구성 가능하며, 전략을 마음대로 연결 및 해제할 수 있습니다.
또한 다음 두 가지 핵심 목표를 달성한 후 가져올 수 있는 예상 이점을 구체화했습니다.
1. 기술적 이점: 코드 구조가 더 명확해지고 이해 및 유지 관리가 쉬워지며 엔진 개발 효율성이 더욱 향상됩니다.
2. 비즈니스 이점: 전략을 통해 더욱 세분화된 구성 및 확장을 달성할 수 있고 비즈니스 지원에 더 친숙해지며 향상된 R&D 효율성으로 비즈니스 반복 속도를 더욱 높일 수 있습니다.
▍전체 리듬의 조절
전체 리듬의 조절도 매우 중요한 부분이므로 모든 사람이 이 문제에 대해 시간적 기대를 가질 수 있습니다.
우선 공사기간을 1개월로 정했고, 한편으로는 사업적으로 허용 가능한 최대 사이클타임을 고려했고, 다른 한편으로는 기술적으로도 빠른 해결을 바랐습니다. 춘절이 다가오고, 회사 문 닫기 전에 서둘러야 하고, 예상치 못한 상황이 발생하지 않도록 1~2주 정도 여유를 두고 예약하세요.
03 구현 과정에서 어떤 경험을 공유할 수 있나요?
1. 고품질 기술 설계 솔루션
이는 일일 요구 사항으로 인해 개발 주기가 3일 이상인 프로젝트에 대한 기술 솔루션을 설계합니다. 이번 재건축도 물론 예외는 아닙니다.
프레임워크의 전체 아키텍처, 모듈 간 프로토콜 설계, 전략의 확장성 설계가 이 기술 솔루션의 초점입니다. 팀은 이에 대해 세 번 이상 논의했습니다.
큰 계획이 확정된 후 팀은 데이터베이스, 인터페이스 필드, 캐시 구조, 로그 매장지 등 공개 부분을 더욱 다듬었습니다. 여러 사람이 공동으로 개발해야 하기 때문에 팀은 문서를 다음과 같이 사용하기로 합의했습니다. 통신 인터페이스 및 문서는 항상 코드와 동기화됩니다.
2. 프레임워크 코드 사전 리팩터링
이 PR은 매우 중요하며 기술 솔루션 구현에서 코드까지 가장 중요한 단계입니다. 우리는 구현 세부 사항을 먼저 무시하고 재구성된 패키지 구조, 모듈 분할, 각 계층 간의 API 정의, 다양한 광고 전략의 추상화를 정리했습니다.
이렇게 하면 기본적으로 우리가 이상적인 프레임워크를 명확하게 표현할 수 있는 메인 코드가 구성됩니다. 그런 다음 여러 중앙 집중식 코드 검토를 구성하고 마침내 통일된 의견을 형성했습니다.
이 단계를 통해 구현 세부 사항에 조기에 얽매이게 되어 기본 프레임워크에 대한 주의가 부족해지고 나중에 재작업하면 실제로 효율성이 저하되는 것을 피할 수 있습니다.
3. 빈번한 통신 및 페어링된 코드 검토 메커니즘
상세 구현 단계에 들어간 후 매우 중요한 점은 기존 로직을 이해하는 것입니다. 엔진 코드는 1년 반 동안 반복해서 개발됐는데, 이번에는 3명의 학생만이 재구성에 참여했다.
전체 과정에서 불분명한 코드 로직을 접했을 때 우리는 반복적으로 소통하고 검증했으며 주관적인 추측을 하지 않았습니다. 이 주의 사항은 실제로 매우 중요합니다.
또한 코드 검토를 위해 이 비즈니스에 익숙한 학생들을 각 모듈별로 담당하도록 배정했으며 메커니즘은 유연합니다.
4. 효과적인 테스트 계획
리팩토링이 완료되지 않았습니다. 먼저 테스트합니다. 이 원칙은 "리팩토링"이라는 책에서 강조되었으며 이 기술 솔루션에 대한 논의의 초점이기도 합니다. 여기서는 이에 대해 자세히 설명하겠습니다.
우선, 우리는 초기 단계에서 오래된 코드를 건드리지 않고 재구성을 위해 완전히 새로운 패키지를 구축하기로 합의했습니다. 이를 통해 재구성 전과 후의 결과를 쉽게 비교하고 동시에 온라인 그레이스케일 실험을 수행할 수 있습니다.
테스트 계획과 관련하여 다음 4가지 사항을 배울 가치가 있습니다.
1. 이 리팩토링에는 기능 조정이 포함되지 않으므로 외부의 동작이 API는 변경 사항이 있는 경우 이 엔드투엔드 테스트 방법이 가장 효과적입니다. 이는 R&D 및 QA 테스트의 가장 중요한 수단입니다.
2. 연기 테스트: QA 학생들은 연기 케이스를 제공하고, R&D 학생들은 연기 테스트를 실시하기 전에 모든 연기 케이스를 통과해야 합니다. 이것은 대부분의 인터넷 회사에서는 흔하지 않지만 대규모 프로젝트에는 절대적으로 효과적입니다.
3. 샌드박스 환경 이중 프로세스 검증: 앞에서 언급한 것처럼 재구성 전후의 코드가 유지되므로 온라인 환경의 입력 매개변수를 스크립트를 통해 케이스로 캡처한 다음 API 반환이 반환됩니다. 필드를 하나씩 비교합니다.
4. 온라인 환경 그레이스케일 실험: 그레이스케일은 재구성에 매우 중요합니다. 우리는 기존 ABTest 플랫폼을 사용하여 그레이스케일 트래픽을 5%에서 10%, 30%, 최종적으로 100%까지 릴리스합니다. 매우 조심스러운 규모의 확장 속도를 설정하고 로그 및 비즈니스 지표 모니터링을 통해 검증했습니다.
마지막에 작성
전체 재건 과정을 검토하고 다음 7가지 핵심 사항으로 요약합니다.
7. 모든 코드 라인을 신중하게 책임져야 합니다
물론 가장 중요한 것은 사람입니다. 대규모 프로젝트 리팩토링은 팀의 협업 능력을 극도로 테스트합니다. 모두가 신뢰할 수 있다면 리팩토링은 절반의 성공입니다. .
위 내용은 하드코어: 핵심 시스템에서 30,000줄 이상의 코드를 재구성하는 여정의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











GEMM(일반 행렬 곱셈)은 많은 응용 프로그램과 알고리즘의 중요한 부분이며 컴퓨터 하드웨어 성능을 평가하는 중요한 지표 중 하나이기도 합니다. GEMM 구현에 대한 심층적인 연구와 최적화는 고성능 컴퓨팅과 소프트웨어와 하드웨어 시스템 간의 관계를 더 잘 이해하는 데 도움이 될 수 있습니다. 컴퓨터 과학에서 GEMM의 효과적인 최적화는 컴퓨팅 속도를 높이고 리소스를 절약할 수 있으며, 이는 컴퓨터 시스템의 전반적인 성능을 향상시키는 데 중요합니다. GEMM의 작동 원리와 최적화 방법에 대한 심층적인 이해는 현대 컴퓨팅 하드웨어의 잠재력을 더 잘 활용하고 다양하고 복잡한 컴퓨팅 작업에 대한 보다 효율적인 솔루션을 제공하는 데 도움이 될 것입니다. GEMM의 성능을 최적화하여

7월 29일, AITO Wenjie의 400,000번째 신차 출시 행사에 Huawei 전무이사이자 Terminal BG 회장이자 Smart Car Solutions BU 회장인 Yu Chengdong이 참석하여 연설을 했으며 Wenjie 시리즈 모델이 출시될 것이라고 발표했습니다. 올해 출시 예정 지난 8월 Huawei Qiankun ADS 3.0 버전이 출시되었으며, 8월부터 9월까지 순차적으로 업그레이드를 추진할 계획입니다. 8월 6일 출시되는 Xiangjie S9에는 화웨이의 ADS3.0 지능형 운전 시스템이 최초로 탑재됩니다. LiDAR의 도움으로 Huawei Qiankun ADS3.0 버전은 지능형 주행 기능을 크게 향상시키고, 엔드투엔드 통합 기능을 갖추고, GOD(일반 장애물 식별)/PDP(예측)의 새로운 엔드투엔드 아키텍처를 채택합니다. 의사결정 및 제어), 주차공간부터 주차공간까지 스마트 드라이빙의 NCA 기능 제공, CAS3.0 업그레이드

Apple 16 시스템의 최고 버전은 iOS16.1.4입니다. iOS16 시스템의 최고 버전은 사람마다 다를 수 있으며 일상적인 사용 경험의 추가 및 개선도 많은 사용자로부터 호평을 받았습니다. Apple 16 시스템의 가장 좋은 버전은 무엇입니까? 답변: iOS16.1.4 iOS 16 시스템의 가장 좋은 버전은 사람마다 다를 수 있습니다. 공개 정보에 따르면 2022년에 출시된 iOS16은 매우 안정적이고 성능이 뛰어난 버전으로 평가되며, 사용자들은 전반적인 경험에 상당히 만족하고 있습니다. 또한, iOS16에서는 새로운 기능 추가와 일상 사용 경험 개선도 많은 사용자들에게 호평을 받고 있습니다. 특히 업데이트된 배터리 수명, 신호 성능 및 발열 제어 측면에서 사용자 피드백은 비교적 긍정적이었습니다. 그러나 iPhone14를 고려하면

4월 11일, 화웨이는 처음으로 HarmonyOS 4.2 100개 시스템 업그레이드 계획을 공식 발표했습니다. 이번에는 휴대폰, 태블릿, 시계, 헤드폰, 스마트 스크린 및 기타 장치를 포함하여 180개 이상의 장치가 업그레이드에 참여할 것입니다. 지난달 HarmonyOS4.2 100대 업그레이드 계획이 꾸준히 진행됨에 따라 Huawei Pocket2, Huawei MateX5 시리즈, nova12 시리즈, Huawei Pura 시리즈 등을 포함한 많은 인기 모델도 업그레이드 및 적응을 시작했습니다. 더 많은 Huawei 모델 사용자가 HarmonyOS가 제공하는 일반적이고 종종 새로운 경험을 즐길 수 있을 것입니다. 사용자 피드백에 따르면 HarmonyOS4.2를 업그레이드한 후 Huawei Mate60 시리즈 모델의 경험이 모든 측면에서 개선되었습니다. 특히 화웨이 M

컴퓨터 운영체제는 컴퓨터 하드웨어와 소프트웨어 프로그램을 관리하는 데 사용되는 시스템이기도 하며, 모든 소프트웨어 시스템을 기반으로 개발된 운영체제 프로그램이기도 합니다. 아래에서 편집자는 컴퓨터 운영 체제가 무엇인지 공유합니다. 소위 운영 체제는 컴퓨터 하드웨어 및 소프트웨어 프로그램을 관리하는 것입니다. 모든 소프트웨어는 운영 체제 프로그램을 기반으로 개발됩니다. 실제로 산업용, 상업용, 개인용 등 광범위한 응용 프로그램을 포괄하는 다양한 유형의 운영 체제가 있습니다. 아래에서는 편집자가 컴퓨터 운영 체제가 무엇인지 설명합니다. Windows 시스템이란 어떤 컴퓨터 운영 체제입니까? Windows 시스템은 미국 Microsoft Corporation에서 개발한 운영 체제입니다. 무엇보다

Linux와 Windows는 각각 오픈 소스 Linux 시스템과 상용 Windows 시스템을 대표하는 두 가지 일반적인 운영 체제입니다. 두 운영 체제 모두 사용자가 운영 체제와 상호 작용할 수 있는 명령줄 인터페이스가 있습니다. Linux 시스템에서는 사용자가 Shell 명령줄을 사용하고 Windows 시스템에서는 cmd 명령줄을 사용합니다. Linux 시스템의 Shell 명령줄은 거의 모든 시스템 관리 작업을 완료할 수 있는 매우 강력한 도구입니다.

Oracle 데이터베이스에서 시스템 날짜를 수정하는 방법에 대한 자세한 설명 Oracle 데이터베이스에서 시스템 날짜를 수정하는 방법은 주로 NLS_DATE_FORMAT 매개 변수를 수정하고 SYSDATE 함수를 사용하는 것입니다. 이 기사에서는 독자가 Oracle 데이터베이스에서 시스템 날짜를 수정하는 작업을 더 잘 이해하고 숙달할 수 있도록 이 두 가지 방법과 구체적인 코드 예제를 자세히 소개합니다. 1. NLS_DATE_FORMAT 매개변수 메소드 수정 NLS_DATE_FORMAT은 Oracle 데이터입니다.

컴퓨터에 win10 운영 체제를 설치한 후 일부 친구는 컴퓨터를 사용할 때 시스템 블루 스크린과 오류 코드 0xc0000428을 경험할 수 있습니다. 이런 종류의 문제는 걱정하지 마세요. 편집자는 시스템의 문제를 먼저 해결하여 하드웨어로 인한 것인지 소프트웨어로 인한 것인지 확인한 다음 목표한 방식으로 문제를 해결할 수 있다고 생각합니다. 자세한 내용은 편집기에서 수행한 작업을 살펴보겠습니다. win10 시스템에서 0xc0000428 문제를 해결하는 방법 1. 계속해서 다시 시작한 다음 강제 종료를 3번 수행하여 win10 시스템이 자동으로 고급 시작 옵션에 들어가도록 합니다. 2. win10 시스템 고급 시작 옵션 인터페이스에서 시작 설정의 문제 해결-고급 옵션-시작 설정을 순서대로 엽니다.
