Câu hỏi kinh điển: Kiến trúc ứng dụng, tại sao lại khó như vậy ??

Câu hỏi kinh điển: Kiến trúc ứng dụng, tại sao lại khó như vậy ??

- 2 mins

Các kiến trúc ứng dụng và các design pattern thông dụng là lời giải chung cho rất nhiều bài toán trong ứng dụng từ xưa tới nay. Lý do các bạn thấy nó khó bởi vì đa số là tiếp cận với kiến trúc/design pattern trước khi các bạn gặp cái vấn đề mà nó giải quyết. Việc biết trước lời giải và suy ngược ra đề bài là rất khó, đặc biệt là các bạn mới học và chưa viết app nhiều.

Vì thế hãy cứ thuận theo tự nhiên, cứ viết nhiều app, gặp nhiều vấn đề về việc tổ chức code thì việc tiếp thu nó sẽ dễ hơn nhiều. Lúc đó mới gọi là hiểu và “giác ngộ” được, biến nó thành cái của mình rồi linh hoạt vận dụng.

Mặt khác nên tránh việc sử dụng kiến trúc một cách gượng ép. Làm vậy không những không giải quyết được vấn đề mà còn đẻ thêm việc để làm. KEEP IT SIMPLE STUPID (KISS) - Giữ nó “SIMPLE” là cả một nghệ thuật chứ ko phải cứ hầm hố lên là tốt.

Hãy luôn tìm kiếm giải pháp tốt hơn: Nếu bạn đã viết 3 app E-Commerce, hẳn là tới app thứ 4 các bạn sẽ thấy source code mình sẽ tốt dần lên. Quan trọng là có rất nhiều tính năng tái sử dụng, một số chỉ mở rộng thêm 1 chút. Vậy làm sao để không phải cứ copy paste code, đổi tên biến, tên file mà chỉ viết thêm những chỗ cần ? Đây chính là lúc tốt nhất để học Design Pattern và các kiến trúc ứng dụng phổ biến.

Hầu hết các kiến trúc đều giải quyết bài toán “CHANGE” (sự thay đổi). Chỗ nào CHANGE nhiều chắc chắn phải cần kiến trúc tốt và các design pattern phù hợp.

Với những dự án long term thì nên làm kiến trúc từ đầu. Đa số các cty hiện nay hay bỏ qua phần này với lý do: làm nhanh prototype để gọi vốn trước, làm đơn giản để test thị trường hoặc tệ hơn là các cty outsourcing làm qua loa cho có rồi nghiệm thu … Việc bỏ qua kiến trúc ứng dụng là “vay mượn thời gian”, có mượn thì sẽ có trả, nợ sẽ có lãi và nhiều trường hợp mất khả năng chi trả luôn.

“Project này nhỏ lắm không cần phải có kiến trúc gì đâu.”, “Project này to quá rồi bây giờ làm kiến trúc cho nó tốn thời gian lắm”. Những ai đang nghĩ như thế thì có làm developer thêm 10 năm nữa cũng chỉ là “experienced junior” chứ không thể là Senior hay Engineer được. Vài dòng chia sẻ, chúc các bạn học tốt.

Nguồn hình: Uber Engineer Blog

Viet Tran

Viet Tran

A Man who is developing apps with Red Bull

comments powered by Disqus
rss facebook twitter github youtube mail spotify lastfm instagram linkedin google google-plus pinterest medium vimeo stackoverflow reddit quora