Lộ trình trở thành Backend Developer

Lộ trình đầy đủ để trở thành một Backend Develop từ cơ bản đến nâng cao, bao gồm nhiều tài liệu chi tiết giúp cho các bạn học tập và làm việc hiệu quả.

Tôi khuyên dùng Tôi khuyên dùng
Có thể thay thế Có thể thay thế
Có thể để học sau Có thể để học sau
Tôi không khuyên dùng Tôi không khuyên dùng

Kiến thức về Internet

Internet là một hệ thống thông tin toàn cầu có thể được truy nhập công cộng gồm các mạng máy tính được liên kết...

Kiến thức Frontend cơ bản

Dù bạn đang trên con đường trở thành backend nhưng bạn cũng nên hiểu cơ bản về giao diện để có thể làm việc tốt với frontend hoặc tự tạo cho mình một dự án hoàn chỉnh

  • HTMLHTML
  • CSSCSS
  • JavascriptJavascript

Hệ điều hành

Operating System (OS) là một phần mềm dùng để điều hành, quản lý toàn bộ tất cả thành phần (bao gồm cả phần cứng và phần mềm) của thiết bị điện tử... Các tài nguyên điển hình bao gồm đơn vị xử lý trung tâm (CPU), bộ nhớ máy tính, lưu trữ tệp, thiết bị nhập / xuất (I / O) và kết nối mạng.

  • Sử dụng terminal
  • Hệ điều hành hoạt động như thế nào?
  • Process Management (Quản lý tiến trình)
  • Threads và Concurrency
  • Cách lệnh terminal cơ bản
    • grep
    • awk
    • sed
    • lsof
    • curl
    • wget
    • tail
    • head
    • less
    • find
    • ssh
    • kill
  • Memory Management (Quản lý bộ nhớ)
  • Interprocess Communication
  • I/O Management (Quản lý File I/O)
  • POSIX Basics
    • stdin
    • stdout
    • stderr
    • pipes
  • Các khái niệm mạng cơ bản

Học ngôn ngữ lập trình backend

Chắc chắn rồi, bạn cần phải học ngôn ngữ backend để có thể trở thành backend developer. Hãy cố gắng học thật kỹ về một ngôn ngữ nào đó thì bạn mới có thể tiến xa hơn trên con đường này

  • JavascriptJavascript
  • JavaJava
  • C#C#
  • PHPPHP
  • RustRust
  • GoGo
  • PythonPython
  • RubyRuby

Version Control Systems

Version Control Systems được hiểu như 1 công cụ giúp bạn theo dõi sự thay đổi của toàn bộ cấu trúc chương trình, từ các file code cho đến các file hình ảnh, video. Với version control, bạn có thể tạo ra nhiều phiên bản của các file ứng với từng thay đổi mà bạn tạo ra.

  • Cách lệnh git thường sử dụng
  • Repo hosting services
    • GithubGithub
    • GitlabGitlab
    • Git bucketGit bucket

Relational Database

Relational Database có nghĩa là hệ quản trị cơ sỡ dữ liệu quan hệ. Relational Database là cơ sở cho SQL, và cho tất cả các hệ thống cơ sở dữ liệu hiện đại như MS SQL Server, IBM DB2, Oracle, MySQL và Microsoft Access.

  • PostgreSQLPostgreSQL
  • MySQLMySQL
  • MariaDBMariaDB
  • MS SQLMS SQL
  • OracleOracle

Học thêm về Databases

Có nhiều loại database như database dạng file, database quan hệ, database hướng đối tượng, database phân tán, database đấm mây, ...

  • ORMs
  • ACID
  • Transactions
  • N+1 Problem
  • Database Normalization
  • Indexes và cách chúng hoạt động
  • NoSQL Databases
    • MongoDb, CouchDB
    • Column DBs Cassandra
    • Time series InfluxDB, TimescaleDB
    • Realtime Firebase, RethinkDB

Học về API

API là các phương thức, giao thức kết nối với các thư viện và ứng dụng khác. Nó là viết tắt của Application Programming Interface – giao diện lập trình ứng dụng. API cung cấp khả năng cung cấp khả năng truy xuất đến một tập các hàm hay dùng. Và từ đó có thể trao đổi dữ liệu giữa các ứng dụng.

  • REST
  • JSON APIs
  • SOAP
  • gRPC
  • HATEOAS
  • Open API Spec và Swagger
  • Authentication
    • Cookie Based
    • OAuth
    • Basic Authentication
    • Token Authentication
    • JWT
    • OpenId
    • SAML

Caching

Caching là một kỹ thuật tăng độ truy xuất dữ liệu và giảm tải cho hệ thống. Cache là nơi lưu tập hợp các dữ liệu, thường có tính chất nhất thời, cho phép sử dụng lại dữ liệu đã lấy hoặc tính toán trước đó, nên sẽ giúp tăng tốc cho việc truy xuất dữ liệu ở những lần sau.

  • CDN
  • Server Side
    • Regis
    • Memcached
  • Client Side

Bảo mật

Để giúp website hoạt động hiệu quả và tránh được những rủi ro như mất dữ liệu, bị hack, các nhà quản trị mạng cần quan tâm hơn đến các phương pháp bảo mật website cũng như các công cụ bảo mật trang web hiệu quả.

  • Thuật toán Hashing
    • MD5
    • SHA Family
    • scrypt
    • bcrypt
    • HTTPs
    • Content Security Policy
    • CORS
    • SSL/TLS
    • OWASP Security Risks

Testing

Back-end Testing sẽ đòi hỏi phải kiểm tra logic nghiệp vụ trong từng lớp ứng dụng. Đối với các ứng dụng đơn giản hơn, Backend testing kiểm tra phía máy chủ hoặc Cơ sở dữ liệu.

  • Integration Testing
  • Unit testing
  • Functional Testing

CI/CD

CI/CD là gì? Đây là 2 chương trình cơ bản được dùng để tối ưu hóa các thao tác test và build một phần mềm. CI và CD giúp tiết kiệm rất nhiều thời gian trong quy trình tạo lập mã code. Chính vì thế, không khó hiểu khi 2 chương trình này được hầu hết các lập trình viên sử dụng. Để nâng cao tay nghề lập trình của mình, bạn nên chắc chắn đã nắm được thông tin cũng như đặc điểm cơ bản về CI và CD

Nguyên tắc thiết kế và phát triển

  • GOF Design Patterns
  • Domain Driven Design
  • Test Driven Development
  • SOLID
  • KISS
  • YAGNI
  • DRY
  • Architectural Patterns
    • Monolithic Apps
    • Microservices
    • SOA
    • CQRS and Event Sourcing
    • Serverless

Search Engines

  • ElasticsearchElasticsearch
  • SolrSolr

Message Brokers

Message broker (hay còn gọi là integration broker hoặc interface engine) là một module trung gian trung chuyển message từ người gửi đến người nhận. Nó là một mô hình kiến trúc (architentural pattern) để kiểm tra, trung chuyển và điều hướng message; làm trung gian giữa các ứng dụng với nhau, tối giản hóa giao tiếp giữa các ứng dụng đó và để tăng hiệu quả tối đa cho việc tách ra các khối nhỏ hơn.

  • RabbitMQRabbitMQ
  • KafkaKafka

Containerization vs Virtualization

  • DockerDocker
  • rktrkt
  • LXCLXC

GraphQL

GraphQL là một cú pháp mô tả cách yêu cầu lấy dữ liệu, và thường được dùng để load data từ một server cho client.

  • ApolloApollo
  • Relay ModernRelay Modern

Graph databases

Cơ sở dữ liệu đồ thị (graph database) là cơ sở dữ liệu được thiết kế để coi các mối quan hệ giữa các dữ liệu là quan trọng như nhau đối với bản thân dữ liệu. Nó được thiết kế để lưu giữ dữ liệu mà không cần biến nó thành một mô hình được xác định trước. Thay vào đó, dữ liệu được lưu trữ giống như lần đầu tiên chúng ta vẽ ra – cho biết cách mỗi thực thể riêng lẻ kết nối với hoặc có liên quan với những thực thể khác.

  • Neo4jNeo4j

WebSockets

WebSoket là công nghệ hỗ trợ giao tiếp hai chiều giữa client và server bằng cách sử dụng một TCP socket để tạo một kết nối hiệu quả và ít tốn kém. Mặc dù được thiết kế để chuyên sử dụng cho các ứng dụng web, lập trình viên vẫn có thể đưa chúng vào bất kì loại ứng dụng nào.

Web Servers

Web server là máy chủ cài đặt các chương trình phục vụ các ứng dụng web. Webserver có khả năng tiếp nhận request từ các trình duyệt web và gửi phản hồi đến client thông qua giao thức HTTP hoặc các giao thức khác

  • NginxNginx
  • ApacheApache
  • CaddyCaddy
  • MS IISMS IIS

Xây dựng để mở rộng

Đây là các topic bạn có thể học để nâng cao trình độ và tăng độ lớn của dự án

  • Mitigation strategies
    • Graceful
    • Degradation
    • Throttling
    • Backpressure
    • Loadshifting
    • Circuit Breaker
  • Instrumentation monitoring telemetry
    • Instrumentation
    • Monitoring
    • Telemetry
  • Migration strategies
  • Horizontal/Vertical Scaling
  • Observability

Tiếp tục học tập

.....................................................................