웹사이트를 디자인할 때 건축가는 어떤 작업을 순서대로 수행하나요?
나는 가짜 건축가, 진짜 프로그래머다.
현재 진행하고 있는 프로젝트는 지난해 8월과 9월에 시작됐지만 웹사이트는 아니지만 대부분 비슷한 작업이어서 그간 진행했던 작업을 소개해보겠습니다. 6개월.
일반적으로 새 프로젝트를 만드는 데에는 두 가지 배경이 있습니다.
하나는 시스템이 없어 다시 구축해야 한다는 것입니다.
하나는 오래된 시스템이 있지만 여러 가지 이유로 기존 시스템을 대체하기 위해(또는 일부 기능을 교체하기 위해) 새로운 시스템을 구축해야 하기 때문입니다.
우리는 후자로 간주됩니다. 시스템은 수년 동안 운영되어 왔으며 주요 임무는 외부 세계에 인터페이스 서비스를 제공하는 것입니다. 이제 서비스의 효율성과 저항력도 비즈니스 요구 사항을 충족할 수 없습니다.
요구사항 정렬
개발 전에 요구사항을 명확하게 정의해야 합니다. 이는 기존 시스템의 변형이기 때문에 요구 사항이 비교적 명확합니다.
기존 시스템에 인터페이스가 몇 개 있는지, 어떤 인터페이스가 더 큰 압박을 받고 있는지 분류하고 인터페이스 마이그레이션 우선순위를 결정합니다.
마이그레이션된 인터페이스의 첫 번째 배치를 결정한 후에는 입력 및 출력 매개변수가 무엇인지, 매개변수에 대해 어떤 검증이 수행되는지, 어떤 필드를 포함하는지 등 인터페이스의 처리 로직을 정리해야 합니다. 입력 매개변수가 가져온 테이블, 쿼리 조건은 무엇인지, 데이터가 처리되었는지, 전송되었는지 등을 확인합니다.
주로 "코딩"을 통해 이 단계는 매우 고통스럽습니다(프로그래머들은 모두 알고 있습니다).
압력 추정
오래된 시스템이기 때문에 압력을 추정하기 쉽습니다. 우리는 주로 다음과 같은 몇 가지 사항에 중점을 둡니다.
압력 추정 기존 시스템의 데이터 양은 얼마나 됩니까, 연간 데이터 양의 증가율은 얼마나 됩니까?
호출되는 시스템 수와 대략적인 서버 수입니다.
일일 평균 통화량. 업무 시간 등 특정 기간 내에 있는 경우 시간당 통화량을 추정해야 합니다.
성수기 거래량은 얼마나 되나요?
건축 디자인
사실 저도 Yeluzi 출신이에요. 이 단계에서 제가 하는 작업은 다음과 같습니다.
프로젝트의 기능적 포인트를 정리하고, 이 프로젝트의 주요 기능은 데이터 추출, 데이터 저장, 데이터 처리 및 서비스 제공입니다. 이 단계는 전반적인 기능 아키텍처를 형성합니다.
각 주요 기능 지점에 대해 사용해야 하는 리소스를 평가합니다. 데이터 처리를 예로 들어 보겠습니다. 데이터 처리는 주로 일괄 처리이므로 Tomcat에서는 분산 잠금 및 캐싱을 위해 Java 프로그램과 Redis를 배포해야 합니다. . MongoDB는 처리된 데이터를 저장하며 이 단계에서 전체 계획이 형성됩니다.
초기 단계에서 수집된 데이터의 양을 기반으로 세부적인 평가를 계속하고 MongoDB의 배포를 평가합니다. 샤딩이 필요한지 여부, 필요한 경우 초기 단계에서 얼마나 많은 샤드를 배포할지, 어떻게 배포할지 이러한 평가가 완료되면 많은 용량이 요청됩니다. 모든 작업이 완료되면 요점을 하나씩 요약하여 물리적 배포 아키텍처를 구성할 수 있습니다.
이 단계에서는 기본적으로 기술 아키텍처 다이어그램이 나왔습니다.
디자인 과정에서는 DBA, 리더 등 많은 사람들과 소통해야 합니다.
개발
개발 단계에 이르면 나는 아직 거기에 있다.
이때 저는 (조금 늦었지만) 사람들을 모집하고 프레임워크를 구축하고 있었고 인터뷰를 하고 코드를 작성하고 있었습니다.
막판 개발자 채용이 거의 다 됐을 때 처음부터 시작해서 첫 번째 인터페이스는 기본적으로 개발을 했는데...
지금도 프로젝트를 진행 중인데, 요구 사항을 전달하고 있어요. , 디자인, 작업 할당, 코드 작성, 개발자가 작성한 코드를 보고 제안을 제공합니다. 다른 프로젝트 팀에서 디자인이나 개발 문제가 있으면 아이디어도 돕겠습니다.
항상 느끼는 바는 다음과 같습니다. 나는 가짜 건축가이자 진짜 프로그래머이다.