Engineering

EGANY Back-End Tech Stack

Yo!

Trong lời bài hát Diễn Xưa của nhạc sĩ Trịnh Công Sơn có câu "Ngày sau sỏi đá cũng cần có nhau". Vậy không lý nào đã có EGANY Front-End Tech Stack (Thành Nguyễn) mà lại không có EGANY Back-end Tech Stack ^^.

Trước khi vào chi tiết chúng ta cần có một cái nhìn về bối cảnh của những gì sẽ được đề cập ở bên dưới.
Là một công ty công nghệ, trong việc phát triển sản phẩm digital, EGANY hiểu được việc đưa ra chiến lược phát triển đúng đắn sẽ quyết định thành bại. Ở giai đoạn đầu với nguồn lực hạn chế (tài chính, nhân lực…) cùng với thách thức phải đưa sản phẩm đến với người dùng càng sớm càng tốt, chúng tôi xác định các tiêu chí sau:

  • Phát triển nhanh chóng, liên tục để đưa sản phẩm sớm ra thị trường.
  • Sản phẩm đủ tốt, điều này không đồng nghĩa dùng công nghệ tốt nhất.
  • Ít tốn công sức và chi phí đầu tư ban đầu.
  • Được tiếp cận công nghệ, học hỏi và phát triển qua từng phát sản phẩm.

Với niềm đam mê công nghệ, thích học cái mới của cả anh founder và nhóm phát triển ^^, chúng tôi đã cùng thảo luận để lựa chọn những công nghệ phù hợp với các tiêu chí đã đặt ra. Với việc lựa chọn phát triển hệ thống theo hướng microservices(triển khai theo hướng vừa đủ) nên các công nghệ được lựa chọn cũng phải phù hợp với kiến trúc này. Okay, giờ cùng ngồi xuống uống ly trà và cùng khám phá những công nghệ hiện tại EGANY đang triển khai cho sản phẩm của mình nhé.

Application and Data

Nodejs

Node.js – "Node.js® is a JavaScript runtime built on Chrome’s V8 JavaScript engine."

Tiêu chí lựa chọn:

  • Mã nguồn mở và được cập nhật liên tục.
  • Cộng đồng với số lượng thành viên lớn và năng động.
  • Tài liệu dễ tiếp cận và đầy đủ.
  • Có thể phát triển nhanh chóng với kho node modules đồ sộ với công cụ quản lý như npmjs hay yarn.
  • Có thể sử dụng javascript hoặc typescript. Điều này tạo ra sự thống nhất từ front-end đến back-end, tạo điều kiện trong việc trao đổi và học tập nâng cao giữa các đội dự án với nhau, thật tuyệt với phải không ^^.

MongoDB

MongoDB – "MongoDB is a general purpose, document-based, distributed database built for modern application developers and for the cloud era."

Tiêu chí lựa chọn:

  • Miễn phí.
  • Có hỗ trợ cloud – MongoDB Atlas.
  • Tài liệu dễ tiếp cận và đầy đủ.
  • Có thư viện, package hỗ trợ nodejs.
  • Triển khai đơn giản.

Redis

Redis – "Redis is an open source (BSD licensed), in-memory data structure store, used as a database, cache, and message broker…"

Tiêu chí lựa chọn:

  • Mã nguồn mở.
  • Có hỗ trợ cloud bởi Google, AzureAzure, AWS… Chi tiết xem tai Redislabs
  • Được sử dụng phổ biến.
  • Không chỉ cache, redis còn hỗ trợ các nhu cầu khác như queue, message broker…
  • Triển khai đơn giản.
  • Hỗ trợ nhiều ngôn ngữ.
  • Có thư viện, package hỗ trợ nodejs.

MySQL

MySQL – "Many of the world’s largest and fastest-growing organizations including Facebook, Google, Adobe, Alcatel Lucent and Zappos rely on MySQL to save time and money powering their high-volume Web sites, business-critical systems and packaged software."

Tiêu chí lựa chọn:

  • Mã nguồn mở.
  • Có hỗ trợ cloud.
  • Được sử dụng phổ biến.
  • Triển khai đơn giản.
  • Hỗ trợ nhiều ngôn ngữ.
  • Có thư viện, package hỗ trợ nodejs.

RabbitMQ

RabbitMQ – "RabbitMQ is the most widely deployed open source message broker."

Tiêu chí lựa chọn:

  • Mã nguồn mở.
  • Có hỗ trợ cloud – CloudAMQP.
  • Tài liệu dễ tiếp cận và đầy đủ.
  • Có thư viện, package hỗ trợ nodejs.
  • Triển khai đơn giản.
  • Đáp ứng nhu cầu phát triển theo hướng sự kiện.

Caddy Server

Caddy Server – "Caddy 2 is a powerful, enterprise-ready, open source web server with automatic HTTPS written in Go"

Tiêu chí lựa chọn:

  • Miễn phí.
  • Dễ triển khai.
  • Tự động gia hạn SSL.

DevOps

Docker

Docker – "… Docker simplifies and accelerates your workflow, while giving developers the freedom to innovate with their choice of tools, application stacks, and deployment environments for each project." – Trích từ Why docker?

Tiêu chí lựa chọn:

  • Mã nguồn mở.
  • Có hỗ trợ phiên bản doanh nghiệp.
  • Công cụ hỗ trợ tuyệt với trong hệ sinh thái docker như: Docker Compose, Docker Desktop, Docker Hub…
  • Có tài liệu hướng dẫn.
  • Hỗ trợ cluster với Docker Swarm – Một lựa chọn tốt để quicks-start trong những ngày đầu làm quen với Microservices.
  • Triển khai đơn giản và nhanh chóng với một số bước trong tài liệu hướng dẫn.

Portainer

Portainer – "Container management made easy. Portainer is the definitive open source container management tool for Kubernetes, Docker, Docker Swarm and Azure ACI. It allows anyone to deploy and manage containers without the need to write code."

Tiêu chí lựa chọn:

  • Mã nguồn mở.
  • Hỗ trợ phiên bản doanh nghiệp.
  • Triển khai dễ dàng.
  • Sử dụng đơn giản.

Telegram

Telegram – "Telegram a new era of messaging"

Tiêu chí lựa chọn:

  • Miễn phí.
  • Hỗ trợ ứng dụng chạy đa nền tảng và thiết bị.
  • Tận dụng tính năng thông báo.
  • Dễ dàng sử dụng và tích hợp.
  • Ở đây tận dụng để nhận thông báo khi hệ thống có vấn đề xảy ra.

Một số công nghệ khác

Javascript

Javascript – "JavaScript (JS) is a lightweight, interpreted, or just-in-time compiled programming language with first-class functions."

Tiêu chí lựa chọn:

  • Miễn phí.
  • Được sử dụng rộng rãi.
  • Cả front-end và back-end để dùng để phát triển.
  • Đơn giản để tiếp cận.
  • Được dùng để tạo ra NodeJS.

TypeScript

TypeScript – "Typed JavaScript at Any Scale.
TypeScript extends JavaScript by adding types.
By understanding JavaScript, TypeScript saves you time catching errors and providing fixes before you run code.
Any browser, any OS, anywhere JavaScript runs. Entirely Open Source."

Tiêu chí lựa chọn:

  • Miễn phí.
  • Được sử dụng ngày càng rộng rãi.
  • Cả front-end và back-end để dùng để phát triển.
  • Hỗ trợ phát triển mã nguồn chất lượng nhất là đối với back-end.

ExpressJS

ExpressJS – "Fast, unopinionated, minimalist web framework for Node.js’

Tiêu chí lựa chọn:

  • Miễn phí.
  • Được sử dụng rộng rãi.
  • Được phát triển và cập nhật liên tục.
  • Dễ tiếp cận.

BullJS

BullJS – "The fastest, most reliable, Redis-based queue for Node.
Carefully written for rock solid stability and atomicity."

Tiêu chí lựa chọn:

  • Miễn phí.
  • Dễ tiếp cận.
  • Hỗ trợ NodeJS.

Vậy là chúng ta đã cùng khám phá những công nghệ đang được áp dụng tại EGANY. Mặc dù bị ảnh hưởng bởi đợt bùng phát của dịch bệnh covid-19, nhưng các sản phẩm của EGANY vẫn được khách hàng sử dụng, ủng hộ và có nhiều phản hồi tích cực. Để đáp lại những điều đấy, trong thời gian tới chung tôi sẽ cải tiến những sản phẩm hiện có và đưa ra các sản phẩm mới tốt hơn để đáp ứng nhu cầu khách hàng của mình. Để đồng hành cùng mục tiêu mới, nhóm back-end cũng đang nghiên cứu thêm một số công nghệ khác để chuẩn bị cho giai đoạn phát triển mới. Vậy cùng điểm qua những gì chúng tôi sẽ dự định hướng đến trong thời gian tới nhé

Những công nghệ mới

Kubernetes

Kubernetes – "Production-Grade Container Orchestration
Automated container deployment, scaling, and management"

Netdata

Netdata – "Monitor everything in real time – for free.
Troubleshoot slowdowns and anomalies in your infrastructure with thousands of per-second metrics, meaningful visualizations, and insightful health alarms with zero configuration."

AWS S3

AWS S3 – "Object storage built to store and retrieve any amount of data from anywhere"

Dapr

Dapr – Distributed Application Runtime – "Dapr helps developers build event-driven, resilient distributed applications. Whether on-premises, in the cloud, or on an edge device, Dapr helps you tackle the challenges that come with building microservices and keeps your code platform agnostic."

Có thể bạn chưa biết

Nếu bạn đã từng hỏi không biêt các tập đoàn hay công ty lớn như Google, Microsoft, Facebook… họ dùng tech stack gì? Có thể vào StackShare.

Lời kết

Lựa chọn có phù hợp hay không? Chỉ có triển khai và đưa vào hoạt động thì mới có câu trả lời cho câu hỏi này. Còn bạn thì sao? Hãy chia sẻ cảm nghĩ ở bên dưới phần bình luận nhé.

Thân chào và hẹn gặp lại.

Thuan Nguyen

DevOps Ninja @ EGANY

Recent Posts

AWS #3 – Kinh nghiệm triển khai EC2

Trong phần trước, mình đã chia sẻ với mọi người những khó khăn khi team…

2 years ago

Microservices #4: Làm việc đa môi trường và sự chờ đợi của Frontend

Xin chào, tiếp tục loạt bài về trải nghiệm của mình trong việc xây dựng…

2 years ago

Frontend Du Ký S2E3 | Cross-platform Apps (phần 3): Có công mài sắt, có ngày release

Cắm đầu cắm cổ dọn dẹp deadline và dọn nhà trước Tết nên ngâm bài…

2 years ago

Front-end Engineer (Reactjs, Nextjs, TypeScript, Svelte, TailwindCSS..)

Nếu bạn yêu thích phát triển sản phẩm với nhiều thử thách và cơ hội…

2 years ago

AWS #2 – Vấn đề và giải pháp

Trong phần 1, mình đã giải thích lý do tại sao EGANY chọn AWS làm…

2 years ago

AWS #1 – Sự lựa chọn của EGANY

Trong giới công nghệ hiện nay, Amazon Web Service không còn là một cái gì…

2 years ago