Cách tái cấu trúc cho Startups 2022: lý do và sự đánh đổi

Nov 27 2022
(Đăng chéo từ trang web Kloto) Bài đăng trên blog này là tổng quan cấp cao về lý do cấu trúc lại mã và hệ thống trong cài đặt khởi động. Chúng tôi đề cập đến các rủi ro, cách tiếp cận và sự đánh đổi để xem xét vào năm 2022.

(Đăng chéo từ trang web Kloto )

Bài đăng trên blog này là một tổng quan cấp cao về lý do cấu trúc lại mã và hệ thống trong cài đặt khởi động. Chúng tôi đề cập đến các rủi ro, cách tiếp cận và sự đánh đổi để xem xét vào năm 2022.

Làm thế nào để đánh giá khi nào chi phí xứng đáng với lợi ích

Hãy trung thực với chính mình

Sự cám dỗ sẽ luôn là tái cấu trúc: mã trong thế giới thực rất lộn xộn và các kỹ sư không thích mã lộn xộn. Đảm bảo rằng có một trường hợp kinh doanh để tái cấu trúc bằng cách đo lượng thời gian mà nhóm dành cho các tính năng mà khách hàng có thể nhìn thấy trực tiếp.

Nghiên cứu của chúng tôi cho thấy rằng các công ty cỡ trung bình và các công ty khởi nghiệp đang phát triển nhanh dành 39% năng lực kỹ thuật cho các công việc không phân biệt, chẳng hạn như cơ sở hạ tầng. Chia các câu chuyện thành các nhiệm vụ phụ như cơ sở hạ tầng và tái cấu trúc để bạn có thể đo thời gian của mình.

Cấu trúc tốt được duy trì tốt

Ranh giới rõ ràng giữa các mô-đun giúp chúng dễ dàng kiểm tra, triển khai và giám sát hơn. Theo dõi các lỗi do khách hàng báo cáo, độ trễ của dịch vụ và tần suất bạn phải hoàn nguyên mã. Ở đầu bên kia của vòng đời phần mềm, có nhiều chỉ báo cho thấy bạn đang có xu hướng gặp nút thắt cổ chai: mất bao nhiêu thời gian để chuyển từ thiết kế sang vận chuyển, mức độ hài lòng về kỹ thuật và tăng chi phí cơ sở hạ tầng — tất cả những điều này có thể là chỉ báo hàng đầu rằng bạn đã xây dựng nợ.

Điểm uốn trong doanh nghiệp

Cơ sở mã có xu hướng tự tổ chức theo ba khía cạnh: quy mô nhóm, tốc độ của các tính năng mới và số lượng khách hàng. Khi những con số này thay đổi đáng kể, có lẽ đã đến lúc xem xét việc chia nhỏ các thành phần.

Nếu bạn đang phát triển nhóm hoặc tăng tốc độ phát triển tính năng, yếu tố giới hạn sẽ là khả năng đọc của mã. Bắt đầu với tái cấu trúc mục tiêu, cơ hội. Nếu cơ sở khách hàng của bạn đang tăng lên, bạn có thể cần nhiều công nghệ hoặc quy trình công việc có khả năng mở rộng hơn.

Kiểm soát những gì bạn có thể, lập kế hoạch cho phần còn lại

Lựa chọn đúng sẽ không ngăn cản việc tái cấu trúc

Tái cấu trúc và tái kiến ​​trúc không có nghĩa là bạn đã có một lựa chọn tồi trước đó. Thường xuyên hơn, các động lực thúc đẩy tái kiến ​​trúc gắn liền với những thay đổi về yêu cầu hoặc các yếu tố bên ngoài. Có ít nhất 4 khía cạnh quan trọng sẽ buộc phải tái cấu trúc trong suốt vòng đời của sản phẩm: tốc độ phát triển tính năng mới, quy mô nhóm kỹ thuật, lượng thời gian dành cho công việc không phân biệt và sự phát triển của khách hàng. Mỗi trong số này ngày càng khó kiểm soát trực tiếp hơn.

Bắt đầu với các quay số dễ dàng…

Trong bốn khía cạnh, hai khía cạnh dễ kiểm soát nhất là tỷ lệ các tính năng mới và quy mô của nhóm kỹ sư. Bạn có thể kiểm soát tốc độ của các tính năng mới bằng cách lập kế hoạch và ưu tiên chặt chẽ hơn. Mở rộng quy mô nhóm là một quy trình chậm hơn, nhưng đó thường là quy trình ít nhất bạn có thể lập kế hoạch.

Nếu cả nhóm và tỷ lệ các tính năng mới đều nhỏ, thì việc tái cấu trúc sẽ không có tác động đáng kể đến doanh nghiệp. Mặt khác, một nhóm lớn làm việc trên nhiều tính năng có thể được hưởng lợi từ việc tổ chức lại thành các nhóm nhỏ hơn — và bạn nên cân nhắc tái cấu trúc hoặc tái cấu trúc mã cho phù hợp. Một kiến ​​trúc cho phép các ranh giới mã và tổ chức sạch hơn sẽ cho phép sản phẩm và công ty mở rộng quy mô.

…và sau đó chuyển sang những cái khó hơn

Lượng thời gian mà nhóm của bạn dành cho những công việc không phân biệt có thể khó kiểm soát và sự tăng trưởng của khách hàng là thước đo khó tác động nhất. Nếu những điều này dễ dàng, mọi người sẽ giảm thiểu công việc không phân biệt và tối đa hóa sự phát triển của khách hàng! Tuy nhiên, bạn có thể

vượt qua các vấn đề với cách tiếp cận cẩn thận và chủ động để tái cấu trúc.

Bước đầu tiên là biết khi nào không tái cấu trúc. Nếu mức tăng trưởng khách hàng của bạn và lượng thời gian dành cho công việc không phân biệt thấp, đừng dành thời gian cho việc tái cấu trúc: thay vào đó hãy tập trung vào các tính năng có tác động và khách hàng có thể nhìn thấy. Tương tự, nếu bạn có lượng khách hàng tăng trưởng tốt và số lượng công việc không phân biệt thấp, thì nhóm của bạn đang hoạt động tốt. Xem xét tái cấu trúc chiến thuật để tránh số lượng công việc không phân biệt tăng lên, nhưng đừng dành quá nhiều thời gian cho nó.

Nếu nhóm của bạn đang dành quá nhiều thời gian cho công việc không có sự khác biệt, thì đã đến lúc xem xét lại kiến ​​trúc để có quy mô phù hợp hơn với vị trí của công ty bạn ngày nay.

Nếu mức độ chấp nhận của khách hàng thấp hơn, ưu tiên của bạn phải là một kiến ​​trúc rẻ hơn sẽ cung cấp cho bạn nhiều đường băng hơn.
Nếu cả mức độ chấp nhận của khách hàng và lượng thời gian mà nhóm của bạn dành cho công việc không phân biệt đều cao, thì có lẽ đã đến lúc tập trung vào một giải pháp tập trung, tối ưu hóa. Điều này thường ở dạng một nhóm hoạt động chuyên dụng có thể thực hiện hiệu quả các nhiệm vụ cơ sở hạ tầng. Đây là một vấn đề tuyệt vời cần giải quyết — vì vậy hãy dành một chút thời gian để chúc mừng bản thân và nhóm của bạn vì đã đến được đây!

Có một mục tiêu, sau đó tìm các phím tắt để đạt được điều đó

Có một kế hoạch, ngay cả khi nó không hoàn hảo

Khi bạn đã cam kết tái cấu trúc, đừng ngại nghĩ lớn. Dựa vào các kỹ sư của bạn để đưa ra trạng thái kết thúc mà họ yêu thích, sau đó cắt giảm nó khi cần thiết. Rất có thể, cơ hội tái cấu trúc lớn sẽ chỉ đến một hoặc hai lần trong vòng đời của sản phẩm, vì vậy hãy sẵn sàng chấp nhận mọi thỏa hiệp mà bạn thực hiện. Nhưng đồng thời, hãy biết rằng ngay cả những kế hoạch tốt nhất cũng sẽ thất bại khi bạn bắt đầu thực hiện.

Lên kế hoạch lớn, thực hiện từng bước nhỏ

Khi bạn biết nơi bạn muốn đặt mã, hãy có chiến thuật về cách đưa mã đến đó. Làm việc từng thành phần một hoặc chọn các thành phần cách xa nhau nhất có thể. Nếu bạn chưa đầu tư vào thử nghiệm vững chắc, cả ở cấp độ đơn vị và hệ thống, thì bây giờ là lúc. Các thử nghiệm sẽ giúp bạn tự tin rằng những thay đổi của bạn sẽ không phá vỡ trải nghiệm của khách hàng hiện có, nhưng chúng cũng có thể giúp nhóm của bạn đưa ra định nghĩa về hoàn thành. Khi các bài kiểm tra vượt qua, thành phần đã sẵn sàng!

Công nghệ tốt nhất là công nghệ bạn có thể điều chỉnh

Chìa khóa để giảm tác động của việc tái cấu trúc và tái cấu trúc đối với các công ty khởi nghiệp nói riêng là sử dụng công nghệ có khả năng thích ứng.

Trước đây, các công ty chọn các công nghệ cụ thể như máy ảo, serverless hoặc bộ chứa để lưu trữ ứng dụng của họ. Vấn đề là việc chuyển đổi từ công nghệ này sang công nghệ khác cực kỳ tốn kém và những gì bạn cần hôm nay có thể không phải là những gì bạn cần vào ngày mai.

Kiến trúc thích ứng là kiến ​​trúc cho phép bạn lưu trữ ứng dụng của mình trên bất kỳ công nghệ nào một cách dễ dàng như nhau. Điều này cho phép bạn điều chỉnh môi trường lưu trữ một cách nhanh chóng, để phù hợp với nhu cầu hiện tại của bạn. Các lựa chọn công nghệ cụ thể như AWS Lambda, Fargate, Kubernetes, gRPC, Linkerd, Azure/GCP có thể hoán đổi cho nhau.

Bằng cách sử dụng lại các cấu trúc ngôn ngữ lập trình hiện có như hàm và trình xử lý sự kiện, cũng như giao diện đặc trưng cho từng ngôn ngữ, kiến ​​trúc thích ứng giúp dịch vụ đám mây dễ sử dụng hơn.

Tìm kiếm các khái niệm trừu tượng và công cụ nhẹ nhưng đủ linh hoạt để cho phép bạn chuyển đổi công nghệ. Chúng tôi nghĩ rằng chú thích Kloto phù hợp với dự luật, vì chúng cho phép bạn tách ý nghĩa ngữ nghĩa của kiến ​​trúc khỏi cấu hình triển khai — nhưng với sự đầu tư đủ vào thư viện thời gian chạy và tự động hóa cơ sở hạ tầng, bạn có thể tự xây dựng giải pháp tương tự.