Tại sao tự lưu trữ giúp tôi trở thành kỹ sư giỏi hơn
Trong lĩnh vực công nghệ thông tin, sự đam mê và nhiệt huyết với công việc có thể tạo ra những kỹ sư xuất sắc. Qua 12 năm làm việc trong ngành, tôi nhận thấy có ba loại kỹ sư chính:
- Kỹ sư làm việc chỉ vì tiền: Họ học công nghệ thông tin vì đây là một ngành có mức lương cao và chỉ làm việc từ 9 đến 5. Thời gian rảnh rỗi của họ thường dành cho những hoạt động khác.
- Kỹ sư đam mê: Họ yêu thích mã nguồn và công nghệ, thường xuyên tham gia vào các dự án mã nguồn mở trong thời gian rảnh. Họ thích tranh luận về ngôn ngữ lập trình hoặc framework trên các nền tảng mạng xã hội.
- Kỹ sư tự học: Đây là những người không học chính quy về công nghệ thông tin nhưng có niềm đam mê mạnh mẽ với lĩnh vực này. Họ có thể đến từ các lĩnh vực không liên quan như y tá, nhạc sĩ, và thường xuyên biến sở thích của mình thành một phần không thể thiếu trong cuộc sống.
Tôi thuộc loại thứ ba, vì tôi không học công nghệ thông tin ở trường mà mọi kiến thức tôi có được đến từ sự trải nghiệm và đam mê.
Những kinh nghiệm học tập lớn giúp tôi nổi bật hơn các kỹ sư khác
1. Khởi đầu với Homelab
Khi bắt đầu xây dựng một Homelab, tôi đã phải học một lượng lớn thông tin từ việc cài đặt hệ điều hành đến việc thiết lập các ổ đĩa và điểm gắn kết. Việc cấu hình SSH an toàn và quản lý quyền truy cập cho người dùng cũng là những kỹ năng quan trọng mà tôi đã phát triển.
2. Hiểu về Networking
Thiết lập mạng là một bước quan trọng trong việc phát triển kỹ năng của tôi. Tôi đã nắm được các khái niệm như DNS, TCP, iptables, và các cổng/firewall. Kỹ năng này giúp tôi vượt trội hơn nhiều đồng nghiệp khác, bởi vì tôi hiểu rõ cách mà các thành phần kết nối và hoạt động với nhau.
3. Tự động hóa với Ansible
Ban đầu, tôi cài đặt phần mềm một cách thủ công, nhưng khi số lượng máy chủ và dịch vụ tăng lên, tôi nhận ra rằng cách làm này rất nhàm chán và dễ mắc lỗi. Do đó, tôi đã tìm hiểu và ứng dụng các công cụ như Ansible và Chef để tự động hóa quá trình cấu hình.
4. Sử dụng Containers
Containers đã thay đổi cách tôi suy nghĩ và vận hành hệ thống. Tôi đã tìm hiểu cách hoạt động của Docker và cách tùy chỉnh hình ảnh và dịch vụ của riêng mình. Khi Homelab mở rộng, tôi cần chạy nhiều container, và kiến thức về mạng đã giúp tôi hiểu rõ hơn về cách các node kết nối với nhau.
5. Làm quen với Kubernetes
Kubernetes là một công nghệ nóng hổi mà tôi đã phải đối mặt. Quá trình di chuyển sang Kubernetes đầy thách thức với nhiều khái niệm và cách thức mới, nhưng giờ đây tôi đã tự tin trong việc chuyển đổi bất kỳ docker-compose nào thành các manifests của Kubernetes.
6. Quản lý manifests với Helm Charts
Khi độ phức tạp của manifests tăng lên, tôi đã khám phá các công cụ như Helm Charts và Kustomize. Những công cụ này giúp đơn giản hóa việc quản lý manifests.
7. Tầm quan trọng của Storage
Với việc mở rộng Homelab, tôi đã mua một NAS, việc thiết lập và tạo Volume Claims cho nhu cầu của bản thân trở nên dễ dàng nhờ kiến thức hiện có.
8. Nâng cấp Hệ thống mạng
Hệ thống mạng của tôi đã tiến hóa từ một router Netgear cơ bản đến một cấu hình phức tạp với:
- Unifi Dream Machine
- Unifi PoE Switches
- Unifi Wi-Fi Access Points
9. Quản lý DNS và VLANs
Việc sử dụng các thiết bị này đã giúp tôi làm chủ các yếu tố như DNS, VLANs và các chính sách Firewall, từ đó tôi có thể theo dõi tình trạng mạng một cách hiệu quả.
10. Tạo ra dịch vụ có thể truy cập
Khi khối lượng công việc của tôi trở thành một phần trong thói quen hàng ngày của gia đình mà họ không hề hay biết, tôi cần đảm bảo rằng mọi thứ đều có thể truy cập từ bên trong và bên ngoài ngôi nhà. Các công cụ như Tailscale và Cloudflare tunnels trở nên rất quan trọng trong giai đoạn này.
11. Khám phá lập trình
Việc có một môi trường thử nghiệm đã giúp tôi học hỏi cách thức xây dựng các ứng dụng, biến chúng thành containers và triển khai chúng. Đây là một cách tuyệt vời để hiểu rõ vòng đời triển khai, mặc dù hiện nay nhiều người phụ thuộc vào kỹ sư khác hoặc dịch vụ bên ngoài để thực hiện điều này.
Những điều cần lưu ý
- Không phải tất cả kỹ sư phần mềm đều chỉ làm mã nguồn. Hệ thống hạ tầng và những người chạy nó cũng quan trọng không kém. Ngay cả những chức năng serverless cũng cần có máy chủ.
- Hãy luôn tìm hiểu và làm quen với các công nghệ mới để không bị tụt lại phía sau trong ngành.
Kết luận
Cuối cùng, tôi hy vọng những kinh nghiệm của tôi sẽ truyền cảm hứng cho những ai đang tìm kiếm con đường phát triển kỹ năng trong lĩnh vực phần mềm. Tự lưu trữ không chỉ giúp tôi học hỏi mà còn tạo ra một môi trường an toàn để thử nghiệm và phát triển.
Hãy bắt đầu hành trình của bạn ngay hôm nay và khám phá những gì bạn có thể đạt được thông qua việc tự lưu trữ. Chúc bạn thành công!
FAQ
1. Tự lưu trữ có phù hợp với tất cả mọi người không?
Tự lưu trữ phù hợp với những ai đam mê công nghệ và muốn tìm hiểu sâu hơn về hệ thống. Nếu bạn chỉ cần một ứng dụng đơn giản, có thể không cần thiết phải tự lưu trữ.
2. Có cần kỹ năng lập trình để tự lưu trữ?
Kỹ năng lập trình sẽ rất hữu ích, nhưng không phải là điều kiện tiên quyết. Bạn có thể bắt đầu từ những kiến thức cơ bản và dần dần học hỏi thêm.
3. Làm thế nào để bắt đầu tự lưu trữ?
Bắt đầu bằng cách tìm hiểu về các công cụ và công nghệ cơ bản như Docker, Ansible và Kubernetes. Xây dựng một Homelab nhỏ tại nhà là một bước khởi đầu tuyệt vời.