{
  "version": 1,
  "locale": "vi",
  "updated": "2021-03-27",
  "page": {
    "type": "article",
    "title": "EGANY Back-End Tech Stack",
    "description": "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...",
    "url": "https://egany.com/blogs/eganyers/egany-back-end-tech-stack/",
    "markdown_url": "https://egany.com/blogs/eganyers/egany-back-end-tech-stack.md",
    "json_url": "https://egany.com/blogs/eganyers/egany-back-end-tech-stack.json",
    "group": "eganyers",
    "author": "Thuan Nguyen",
    "published": "2021-03-11T03:14:30.000Z",
    "modified": "2021-03-27T10:47:37.000Z",
    "categories": [
      "Engineering"
    ]
  },
  "organization": {
    "name": "EGANY",
    "legal_name": "CÔNG TY CỔ PHẦN CÔNG NGHỆ EGANY",
    "alternate_name": "EGANY Technology JSC",
    "url": "https://egany.com/",
    "address": "77/6 Hồ Thị Kỷ, Phường Vườn Lài, TP. Hồ Chí Minh",
    "telephone": "+84934269700",
    "email": "support@egany.com",
    "tax_id": "0313000791",
    "opening_hours": "Thứ 2 - Thứ 6, 9:00 - 17:00",
    "same_as": [
      "https://www.facebook.com/egany.tech/",
      "https://www.youtube.com/user/eganydotcom",
      "https://zaloapp.com/qr/p/15np7bg4k8s47?src=qr"
    ]
  },
  "headings": [
    {
      "level": 1,
      "text": "EGANY Back-End Tech Stack",
      "id": "egany-back-end-tech-stack"
    },
    {
      "level": 2,
      "text": "Application and Data",
      "id": "application-and-data"
    },
    {
      "level": 3,
      "text": "Nodejs",
      "id": "nodejs"
    },
    {
      "level": 3,
      "text": "MongoDB",
      "id": "mongodb"
    },
    {
      "level": 3,
      "text": "Redis",
      "id": "redis"
    },
    {
      "level": 3,
      "text": "MySQL",
      "id": "mysql"
    },
    {
      "level": 3,
      "text": "RabbitMQ",
      "id": "rabbitmq"
    },
    {
      "level": 3,
      "text": "Caddy Server",
      "id": "caddy-server"
    },
    {
      "level": 2,
      "text": "DevOps",
      "id": "devops"
    },
    {
      "level": 3,
      "text": "Docker",
      "id": "docker"
    },
    {
      "level": 3,
      "text": "Portainer",
      "id": "portainer"
    },
    {
      "level": 3,
      "text": "Telegram",
      "id": "telegram"
    },
    {
      "level": 2,
      "text": "Một số công nghệ khác",
      "id": "mot-so-cong-nghe-khac"
    },
    {
      "level": 3,
      "text": "Javascript",
      "id": "javascript"
    },
    {
      "level": 3,
      "text": "TypeScript",
      "id": "typescript"
    },
    {
      "level": 3,
      "text": "ExpressJS",
      "id": "expressjs"
    },
    {
      "level": 3,
      "text": "BullJS",
      "id": "bulljs"
    },
    {
      "level": 2,
      "text": "Những công nghệ mới",
      "id": "nhung-cong-nghe-moi"
    },
    {
      "level": 3,
      "text": "Kubernetes",
      "id": "kubernetes"
    },
    {
      "level": 3,
      "text": "Netdata",
      "id": "netdata"
    },
    {
      "level": 3,
      "text": "AWS S3",
      "id": "aws-s3"
    },
    {
      "level": 3,
      "text": "Dapr",
      "id": "dapr"
    },
    {
      "level": 2,
      "text": "Có thể bạn chưa biết",
      "id": "co-the-ban-chua-biet"
    },
    {
      "level": 2,
      "text": "Lời kết",
      "id": "loi-ket"
    }
  ],
  "links": [
    {
      "text": "npmjs",
      "url": "https://www.npmjs.com/"
    },
    {
      "text": "yarn",
      "url": "https://yarnpkg.com/"
    },
    {
      "text": "MongoDB Atlas",
      "url": "https://www.mongodb.com/cloud/atlas"
    },
    {
      "text": "Redislabs",
      "url": "https://redislabs.com/"
    },
    {
      "text": "CloudAMQP",
      "url": "https://www.cloudamqp.com/"
    }
  ],
  "sections": [
    {
      "id": "hero",
      "heading": "EGANY Back-End Tech Stack",
      "content_markdown": "Yo!\n\nTrong 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 ^^.\n\nTrướ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.  \nLà 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:\n\n- Phát triển nhanh chóng, liên tục để đưa sản phẩm sớm ra thị trường.\n- Sản phẩm đủ tốt, điều này không đồng nghĩa dùng công nghệ tốt nhất.\n- Ít tốn công sức và chi phí đầu tư ban đầu.\n- Đượ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.\n\nVớ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é.",
      "links": []
    },
    {
      "id": "application-and-data",
      "heading": "Application and Data",
      "content_markdown": "### Nodejs\n\n![NodeJS Logo](https://cdn.egany.com/images/blogs/2021/03/nodejs-local-256.png)\n\nNode.js – \"Node.js® is a JavaScript runtime built on Chrome’s V8 JavaScript engine.\"\n\nTiêu chí lựa chọn:\n\n- Mã nguồn mở và được cập nhật liên tục.\n- Cộng đồng với số lượng thành viên lớn và năng động.\n- Tài liệu dễ tiếp cận và đầy đủ.\n- 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](https://www.npmjs.com/) hay [yarn](https://yarnpkg.com/).\n- 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 ^^.\n\n### MongoDB\n\n![Mongodb Logo](https://cdn.egany.com/images/blogs/2021/03/mongodb-logo.png)\n\nMongoDB – \"MongoDB is a general purpose, document-based, distributed database built for modern application developers and for the cloud era.\"\n\nTiêu chí lựa chọn:\n\n- Miễn phí.\n- Có hỗ trợ cloud – [MongoDB Atlas](https://www.mongodb.com/cloud/atlas).\n- Tài liệu dễ tiếp cận và đầy đủ.\n- Có thư viện, package hỗ trợ nodejs.\n- Triển khai đơn giản.\n\n### Redis\n\n![Redis Logo](https://cdn.egany.com/images/blogs/2021/03/redis-logo.png)\n\nRedis – \"Redis is an open source (BSD licensed), in-memory data structure store, used as a database, cache, and message broker…\"\n\nTiêu chí lựa chọn:\n\n- Mã nguồn mở.\n- Có hỗ trợ cloud bởi Google, AzureAzure, AWS… Chi tiết xem tai [Redislabs](https://redislabs.com/)\n- Được sử dụng phổ biến.\n- Không chỉ cache, redis còn hỗ trợ các nhu cầu khác như queue, message broker…\n- Triển khai đơn giản.\n- Hỗ trợ nhiều ngôn ngữ.\n- Có thư viện, package hỗ trợ nodejs.\n\n### MySQL\n\n![MySQL Logo](https://cdn.egany.com/images/blogs/2021/03/logo-mysql-170x115-1.png)\n\nMySQL – \"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.\"\n\nTiêu chí lựa chọn:\n\n- Mã nguồn mở.\n- Có hỗ trợ cloud.\n- Được sử dụng phổ biến.\n- Triển khai đơn giản.\n- Hỗ trợ nhiều ngôn ngữ.\n- Có thư viện, package hỗ trợ nodejs.\n\n### RabbitMQ\n\n![Rabbitmq Logo](https://cdn.egany.com/images/blogs/2021/03/rabbitmq-logo.png)\n\nRabbitMQ – \"RabbitMQ is the most widely deployed open source message broker.\"\n\nTiêu chí lựa chọn:\n\n- Mã nguồn mở.\n- Có hỗ trợ cloud – [CloudAMQP](https://www.cloudamqp.com/).\n- Tài liệu dễ tiếp cận và đầy đủ.\n- Có thư viện, package hỗ trợ nodejs.\n- Triển khai đơn giản.\n- Đáp ứng nhu cầu phát triển theo hướng sự kiện.\n\n### Caddy Server\n\n![Caddy Logo](https://cdn.egany.com/images/blogs/2021/03/caddy-logo.png)\n\nCaddy Server – \"Caddy 2 is a powerful, enterprise-ready, open source web server with automatic HTTPS written in Go\"\n\nTiêu chí lựa chọn:\n\n- Miễn phí.\n- Dễ triển khai.\n- Tự động gia hạn SSL.",
      "links": [
        {
          "text": "npmjs",
          "url": "https://www.npmjs.com/"
        },
        {
          "text": "yarn",
          "url": "https://yarnpkg.com/"
        },
        {
          "text": "MongoDB Atlas",
          "url": "https://www.mongodb.com/cloud/atlas"
        },
        {
          "text": "Redislabs",
          "url": "https://redislabs.com/"
        },
        {
          "text": "CloudAMQP",
          "url": "https://www.cloudamqp.com/"
        }
      ]
    },
    {
      "id": "devops",
      "heading": "DevOps",
      "content_markdown": "### Docker\n\n![Docker Logo](https://cdn.egany.com/images/blogs/2021/03/docker-logo-300x77.png)\n\nDocker – \"… 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?\n\nTiêu chí lựa chọn:\n\n- Mã nguồn mở.\n- Có hỗ trợ phiên bản doanh nghiệp.\n- Công cụ hỗ trợ tuyệt với trong hệ sinh thái docker như: Docker Compose, Docker Desktop, Docker Hub…\n- Có tài liệu hướng dẫn.\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.\n- 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.\n\n### Portainer\n\n![Portainer Logo](https://cdn.egany.com/images/blogs/2021/03/portainer-logo-300x96.png)\n\nPortainer – \"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.\"\n\nTiêu chí lựa chọn:\n\n- Mã nguồn mở.\n- Hỗ trợ phiên bản doanh nghiệp.\n- Triển khai dễ dàng.\n- Sử dụng đơn giản.\n\n### Telegram\n\n![Telegram Logo](https://cdn.egany.com/images/blogs/2021/03/telegram-logo-150x150.png)\n\nTelegram – \"Telegram a new era of messaging\"\n\nTiêu chí lựa chọn:\n\n- Miễn phí.\n- Hỗ trợ ứng dụng chạy đa nền tảng và thiết bị.\n- Tận dụng tính năng thông báo.\n- Dễ dàng sử dụng và tích hợp.\n- Ở đây tận dụng để nhận thông báo khi hệ thống có vấn đề xảy ra.",
      "links": []
    },
    {
      "id": "mot-so-cong-nghe-khac",
      "heading": "Một số công nghệ khác",
      "content_markdown": "### Javascript\n\n![JavaScript Logo](https://cdn.egany.com/images/blogs/2021/02/javascript-thumb-150x150.jpg)\n\nJavascript – \"JavaScript (JS) is a lightweight, interpreted, or just-in-time compiled programming language with first-class functions.\"\n\nTiêu chí lựa chọn:\n\n- Miễn phí.\n- Được sử dụng rộng rãi.\n- Cả front-end và back-end để dùng để phát triển.\n- Đơn giản để tiếp cận.\n- Được dùng để tạo ra NodeJS.\n\n### TypeScript\n\n![TypeScript Logo](https://cdn.egany.com/images/blogs/2021/03/ts-logo-128.png)\n\nTypeScript – \"Typed JavaScript at Any Scale.  \nTypeScript extends JavaScript by adding types.  \nBy understanding JavaScript, TypeScript saves you time catching errors and providing fixes before you run code.  \nAny browser, any OS, anywhere JavaScript runs. Entirely Open Source.\"\n\nTiêu chí lựa chọn:\n\n- Miễn phí.\n- Được sử dụng ngày càng rộng rãi.\n- Cả front-end và back-end để dùng để phát triển.\n- Hỗ trợ phát triển mã nguồn chất lượng nhất là đối với back-end.\n\n### ExpressJS\n\n![ExpressJS Logo](https://cdn.egany.com/images/blogs/2021/03/express-facebook-share-e1616257684165.png)\n\nExpressJS – \"Fast, unopinionated, minimalist web framework for Node.js’\n\nTiêu chí lựa chọn:\n\n- Miễn phí.\n- Được sử dụng rộng rãi.\n- Được phát triển và cập nhật liên tục.\n- Dễ tiếp cận.\n\n### BullJS\n\n![BullJS Logo](https://cdn.egany.com/images/blogs/2021/03/bulljslogo-e1616261323724.png)\n\nBullJS – \"The fastest, most reliable, Redis-based queue for Node.  \nCarefully written for rock solid stability and atomicity.\"\n\nTiêu chí lựa chọn:\n\n- Miễn phí.\n- Dễ tiếp cận.\n- Hỗ trợ NodeJS.\n\nVậ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é",
      "links": []
    },
    {
      "id": "nhung-cong-nghe-moi",
      "heading": "Những công nghệ mới",
      "content_markdown": "### Kubernetes\n\n![Kubernetes Logo](https://cdn.egany.com/images/blogs/2021/03/kuberneteslogo-150x150.png)\n\nKubernetes – \"Production-Grade Container Orchestration  \nAutomated container deployment, scaling, and management\"\n\n### Netdata\n\n![Netdata Logo](https://cdn.egany.com/images/blogs/2021/03/netdata-logo-e1616261243842.png)\n\nNetdata – \"Monitor everything in real time – for free.  \nTroubleshoot slowdowns and anomalies in your infrastructure with thousands of per-second metrics, meaningful visualizations, and insightful health alarms with zero configuration.\"\n\n### AWS S3\n\n![AWS S3 Logo](https://cdn.egany.com/images/blogs/2021/03/logo_amazon-s3_module-11-150x150.png)\n\nAWS S3 – \"Object storage built to store and retrieve any amount of data from anywhere\"\n\n### Dapr\n\n![Dapr Logo](https://cdn.egany.com/images/blogs/2021/03/dapr-logo.png)\n\nDapr – 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.\"",
      "links": []
    },
    {
      "id": "co-the-ban-chua-biet",
      "heading": "Có thể bạn chưa biết",
      "content_markdown": "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.",
      "links": []
    },
    {
      "id": "loi-ket",
      "heading": "Lời kết",
      "content_markdown": "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é.\n\nThân chào và hẹn gặp lại.",
      "links": []
    }
  ]
}