Phần mềm và sự chuyển đổi sang điện toán đám mây
Sự khác nhau giữa kiến trúc và thiết kế phần mềm cùng với việc chuyển đổi sang quy mô lớn hơn là mối quan tâm hàng đầu của các chuyên gia phát triển ứng dụng.
Tại sự kiện Large Scale System - Architecture Design & Cloud do Harvey Nash Việt Nam tổ chức vào hôm 22/11, kiến trúc sư giải pháp công nghệ thông tin Lance Hendrix đã có bài thuyết trình giới thiệu đến khách tham dự một cái nhìn tổng quan về sự khác nhau giữa kiến trúc và thiết kế phần mềm.
Kiến trúc và thiết kế phần mềm
Trong một số mô tả của chu kỳ phát triển phần mềm (Software Development Life Cycle - SDLC) thì kiến trúc và thiết kế có thể hoán đổi vị trí, nhưng về bản chất thì rất khác nhau. Kiến trúc là bức tranh lớn hơn mang tính khái niệm và logic, là sự lựa chọn của framework, ngôn ngữ lập trình, quản lý phạm vi và mục tiêu.
Thiết kế phần mềm là hình ảnh nhỏ hơn như kế hoạch về cách mã code sẽ được tổ chức; làm rõ các tính năng và tính hiệu quả của dự án, ngoài ra đặc điểm kỹ thuật được viết trong giai đoạn này.
Thiết kế phần mềm có một lịch sử phát triển khá lâu trong khi kiến trúc phần mềm chỉ là thuật ngữ ở tuổi 20. Với mô hình hệ thống ngày càng lớn như hiện nay thì khuynh hướng nhìn thiết kế phần mềm một phần của kiến trúc.
Mô hình hệ thống
Việc đặt nền tảng cho một mô hình hệ thống công nghệ lớn có thể xem như tại thời điểm những chiếc máy tính mainframe đầu tiên được ra đời. Hệ thống ngày càng trở nên phức tạp khi mô hình máy chủ - máy khách được ứng dụng nhiều hơn và việc sử dụng dữ liệu cũng được quan tâm nhất là khi Internet bùng nổ.
Trong vài thập kỷ qua, sự phức tạp của hệ thống phần mềm đã tăng đáng kể. Khi kích thước và độ phức tạp của các hệ thống phần mềm tăng lên, vấn đề thiết kế vượt ngoài tầm thuật toán và cấu trúc dữ liệu đã đặt ra một bài toán cần giải quyết. Thiết kế và xác định cấu trúc hệ thống tổng thể nổi lên như một vấn đề mới để thích ứng với tốc độ tăng trưởng.
Việc triển khai kiến trúc phần mềm sẽ ảnh hưởng đến sự thiết kế, phát triển, hiệu năng, khả năng mở rộng của hệ thống. Các quá trình từ việc xác định các thành phần tham gia, thiết lập thiết lập bản đồ rồi triển khai trên môi trường và xác định các mối quan hệ để hoàn thiện việc thiết kế một kiến trúc hệ thống.
Khi phát triển một hệ thống những xem xét chủ đạo là gì mà một kiến trúc sư phần mềm phải cân bằng cho các đặc tính về khả năng mở rộng, sẵn sàng, bảo trì, khả năng tìm hiểu và mổ xẻ.
Chi phí hoạt động đã luôn luôn là một phần quan trọng của chi phí điều hành một hệ thống. Các thành phần trong việc quy hoạch kiến trúc hệ thống bao gồm các phần liên quan đến nhau từ giá của phần cứng, phần mềm, cơ sở vật chất và xu hướng truyền thông, việc quản lý chi phí và người điều hành.
Các cuộc thảo luận đều cho rằng việc quản lý hệ thống thường xuyên có những sự phát sinh bất chợt đến từ việc không nhận định hết được cấu hình của hệ thống từng thời điểm hay đơn giản là không tuân thủ các quy trình (ví dụ như không có bản sao lưu dữ liệu)
Trong một hệ thống, các nhà kiến trúc có thể hoạch định bằng nhiều phương thức khác nhau nhưng tất cả phải đảm bảo việc tối ưu hóa khả năng xử lý từng thời điểm và mở rộng lúc cần thiết. Với những hệ thống lớn thời điểm trước đây thì các chuyên gia phải tính toán để thế nào có thể đạt được 1.000 giao dịch/giây, tương đương 60.000 giao dịch/phút và gần 100 triệu giao dịch/ngày.
Ví dụ như năm 1994, hệ thống dữ liệu trị giá 30 triệu USD xử lý các giao dịch ngân hàng tại Mỹ sử dụng thiết bị Oracle sử dụng hệ điều hành Vax/VMS có hiệu suất 1.000 giao dịch/giây (TPS) chuyển đổi sang hệ thốngchuẩn mực hơn là IBM/TPF với hiệu suất RDB/VMS trong khoảng 3.000 TPS.
Thời điểm đó là một con số khổng lồ và không cần thiết phải đầu tư nhưng đến năm 2001 thì con số cần thiết của hệ thống cần xử lý lên đến 1 tỷ giao dịch mỗi ngày, 1 triệu giao dịch tốn khoảng 5 USD... Những con số này càng ngày càng lớn thì việc thiêt kế một hệ thống lớn cần xác định được thời điểm để đầu tư vào thiết bị phần cứng.
Kiến trúc điện toán đám mây
Các chuyên gia trong lĩnh vực phần mềm, hệ thống tại sự kiện Large Scale System - Architecture Design & Cloud - Ảnh do Harvey Nash Việt Nam cung cấp |
Kiến trúc điện toán đám mây bao gồm các nền tảng tương tác trực tiếp với người sử dụng, thành phần để xử lý các thông tin từ thành phần tương tác trực tiếp với người sử dụng (máy chủ, kho lưu trữ), nền tảng phân phối và hệ thống mạng (Internet, Intranet, Intercloud). Các nhà cung cấp dịch vụ điện toán đám mây cung cấp các dịch vụ của họ theo ba mô hình cơ bản là Cơ sở hạ tầng như một dịch vụ (IaaS), Nền tảng như một dịch vụ (PaaS) và Phần mềm như một dịch vụ (SaaS).
Việc phát hành ứng dụng trên nền tảng đám mây thay đổi các khái niệm kiến trúc và thiết kế phần mềm. Đại bộ phận hạ tầng cơ sở của điện toán đám mây hiện nay là sự kết hợp của những dịch vụ phân phối thông qua các trung tâm dữ liệu với những cấp độ khác nhau của công nghệ ảo hóa.
Trước đây để có thể triển khai một ứng dụng thì phải đi mua/thuê một hay nhiều máy chủ, sau đó đặt máy chủ tại các trung tâm dữ liệu thì nay điện toán đám mây cho phép bạn giản lược quá trình mua/thuê. Các đặc tính về khả năng mở rộng, sẵn sàng, bảo trì, khả năng tìm hiểu và mổ xẻ trong việc thiết kế và kiến trúc ứng dụng cũng có nhiều thay đổi.