É BỘ CÔNG THƯƠNG ` ec ( TRUONG ĐẠI HỌC CÔNG NGHIỆP THỰC PHAM TP HCM x KHOA CNTT o00
Dé an: AO HOA VA DIEN TOAN DAM MAY
Dé tai: Tim hiéu vé nén tang Heroku — trién khai tng dung trén nén tang
Giảng viên hướng dẫn: Phạm Tuấn Khiêm
Sinh viên thực hiện:
1 2001190646 —- Nguyễn Trọng Liêm
2 2001191021 — Trần Phương Bình
Trang 2NHAN XET CUA GIANG VIEN HUONG DAN
Trang 3LỜI MỞ ĐẦU
Ngày nay, cùng với sự vươn lên của đất nước, hòa vào đó Công nghệ thông tin là một ngành đã có những bước phát triển mạnh mẽ không ngừng và nó đã trở thành chiếc chìa khóa dẫn đến thành công cho nhiều cá nhân tổ chức Với những ứng dụng của mình, công nghệ thông tin đã góp phần mang lại nhiều lợi ích mà không aI có thể phủ nhận được Đặc biệt là trong lĩnh vực quản lý kinh té, cong nghệ thông tin đã góp phần tạo ra sự thay đối nhanh chóng cho bộ mặt xã hội
Trong quá trình thực hiện đề tài nhóm đã gặp phải không ít khó khăn và trở ngại tuy nhiên, với sự giúp đỡ của bạn bè, cùng sự hướng dẫn tận tình, chỉ bảo cặn kẽ của giảng viên Phạm Tuấn Khiêm cuối cùng chúng em cũng đã cố gắng hoàn thành để tài này với tất cả sự cố gắng và nỗ lực Chúng em xin được gửi lời cảm ơn tới những người bạn đã góp ý và giúp đỡ nhóm, và đặc biệt là cảm ơn cô, người đã giúp chúng tôi xác định được những yêu cầu và mục tiêu đề tài, truyền dạy các kĩ năng nghiệp vụ cũng như hướng dẫn cho chúng tôi cách thức thực hiện đê tài
Do kiến thức thực tế và hiểu biết còn hạn chế nên trong quá trình hoàn thành báo cáo không tránh khỏi sai sót, nhóm chúng em rất mong sự góp ý đóng góp của thay và các bạn để nhóm có thê hoàn thiện bài tập lớn được tốt hơn
Trang 41 2 Awe & c Mục lục Herokw 1a G1? oo .Ầ Các tính năng của Heroku - - -<- -<<< << 2.1.Heroku untime - 5< << {<< <<<<2 2.2.Heroku Postgres (SQL) -. <<<- 2.3 Hecroku Redis - - <- 2.4 Hecroku SeaÌe <<<-<<<<+ 2.5 Add-ons - << s2 e2 2.6 Code/data rollbaek 2.7 App mefFriCS 5< << <<<<<<<<<2 2.8 Continuous đelÌIVery - - 2.9 Github Intèrafion
Cơ chế hoạt động của Heroku - 2 5s <ss‡ Tại sao lại sử dụng Heroku trong khi có AWS?
Tại sao Heroku thu hút người dùng2
Các phiên bản của Herou - - - <<< + 6.1 Hecroku Postgres - - 6.2 Hecroku Redis - - <- 6.3 Hecroku Teams - 6.4 Hecroku Enferprise 6.5 Hecroku Connect - 6.6 Heroku Elementfs -
Ưu và nhược điểm Heroku - 2 5s s2 £s2 7.1 Ưu điểm 5-5552 svcrees 7.2 Nhược điểm 2 sex cxe Cách đưa ứng dụng lên Heroku -
Tài liệu tham khảo 55 SSSSSS S123 <2
1
Trang 51 Heroku là gi?
Heroku là một nền tảng đám mây dựa trên ứng dung container dưới dạng dich vụ (PaaS) Các nhà phát triển sử dụng Heroku để triển khai, quản lý và mở rộng các ứng dụng hiện đại Nền tảng của họ rất linh hoạt và dễ sử dụng, cung cấp cho các nhà phát triển con đường đơn giản nhất để đưa ứng dụng của họ ra thị trường Heroku được quản lý hoàn toàn bởi Heroku, cho phép các nhà phát triển tự do tập trung vào sản phẩm cốt lõi của họ mà không bị phân tâm trong việc duy trì máy chủ, phần cứng hoặc cơ sở hạ tầng Trải nghiệm Heroku cung cấp các dịch vụ công cụ, quy trình làm việc và hỗ trợ tất cả được thiết kế để nâng cao năng suất của nhà phát triển ứng dụng
Heroku được biết đến như một nơi để triển khai các ứng dụng trong dyno (Khi bạn triển khai một ứng dụng Heroku, bạn phải thiết lập một máy ảo được gọi la slug, su dung mot hoac nhiéu buildpacks Khi một máy ảo được khởi chạy từ sluø, nó được gọi là dyno.)
Trong trường hợp phải xử lý khối lượng công việc nhiều phức tạp, bạn sẽ cần thêm nhiều block (scale chiều ngang) hoặc tăng kích thước các block (scale chiều dọc) Phí sử dụng Heroku được tính dựa trên sỐ lượng dyno và kích thước mỗi dyno mà bạn dùng
Mặc dù bạn có thể phải trả phí để sử dụng Heroku, nhưng Heroku không thật sự lưu trữ ứng dụng của bạn Thực tế thì cả nền tảng Heroku lẫn mọi ứng dụng phát triển trên đó đều được triển khai trên Amazon Web Services (AWS)
2 Các tính năng của Heroku 2.1 Heroku Runtime
Trang 62.2 Heroku Postgres (SQL)
Dich vu PostgreSQL dang tin cậy và an toàn với thiét lap dé dàng, mã hóa nhanh øọn, mở rộng quy mô đơn giản, chuyển đổi cơ sở dữ liệu, bảo vệ liên tục va hon
thê nữa
2.3 Heroku Redis
Hỗ trợ dịch vụ Redis cho lập trình viên sử dụng Một trong những dịch vụ cache key-value trên bộ nhớ tốc độ nhanh phổ biến
2.4 Heroku Scale
Heroku có thể mở rộng quy mô ứng dụng ngay lập tức, cả theo chiều dọc và chiều ngang Bạn có thể điều hành mọi thứ một cách nhàn hạ từ các dự án sở thích nhỏ lẻ cho đến thương mại điện tử cấp doanh nghiệp
2.5 Add-ons
Mở rộng, nâng cao và quản lý các ứng dụng của bạn với các dịch vụ được tích hợp sẵn như New Relic, MongoDB, SendGrid, Searchify, Fastly, Papertrail,
ClearDB MySQL, Treasure Data
2.6 Code/data rollback
Hệ thống xây dung Heroku va dich vu Postgres cho phép bạn khôi phục mã nguôn hoặc cơ sở đữ liệu của mình về trạng thái trước đó ngay lập tức
2.7 App metrics
Bạn sẽ luôn biết những gì xảy ra với các ứng dụng của bạn nhờ vào tính năng giám sát tích hợp lưu lượng, thời gian phản hồi, bộ nhớ, tải CPU và lỗi
2.8 Continuous delivery
Heroku Flow sir dung Heroku Pipeline, Review Apps và Github tích hợp để xây dung quy trinh pipeline CI/CD gém build, test, deploy
2.9 Github Integration
Trang 73 Cơ chế hoạt động của Heroku
w Heroku được biết đến với mục đích dành cho việc chạy các ứng dung trong dynos — thực sự chỉ là các máy ảo có thé duoc cung cap sức mạnh dựa trên độ lớn các ứng dụng của bạn Nghĩ về dynos như các khối xây dựng cho việc chạy các ứng dụng
Nếu bạn muốn xử lý nhiều đữ liệu hay nhiều tác vụ phức tạp hơn bạn sẽ cần nhiều khối hơn (còn được gọi là mở rộng theo chiều rộng) hay tăng kích cỡ các khối (mở rộng theo chiều sâu) Heroku khi đó tính phí theo tháng đối với những thay đổi này của bạn, dựa trên số dynos mà bạn có và kích cỡ của mỗi dyno
w Mặc dù Heroku tính tiền từ bạn dựa trên dyno, nhưng họ thực sự không hề lưu giữ ứng dụng của bạn Trong thực tế, toàn bộ nền tảng Heroku cũng như mọi ứng dụng khác được xây dựng trên Heroku — đều được triển khai trên AWS (Amazon Web Services)
4 Tại sao lại sử dụng Heroku trong khi có AWS?
Heroku và AWS không giống nhau AWS là nhà cung cấp IaaS, chịu trách nhiệm quản lý các trung tâm chia sẻ đữ liệu lớn trên nền tảng đám mây điện toán (cloud) Các công ty như AWS, Azure và Google đều triển khai laaS để các nhà phát triển lưu trữ ứng dụng của họ trên nền tảng các trung tâm dữ liệu này thay vì tự xây dựng server Nhưng do bản chất kinh doanh, các nhà cung cấp laaS dường như quan tâm đến việc điều hành các trung tâm lưu trữ đữ liệu hơn là trải nghiệm của khách hàng Vậy nên bạn cần có kiến thức về AWS thì mới làm việc trực tiếp với nó được
Còn Heroku lại là một PaaS nam trén AWS Nén tảng này được thiết kế đặc biệt giúp các nhà phát triển ứng dụng dễ sử dụng hơn Chăng hạn, để triển khai ứng dụng trên Heroku, bạn chỉ cần biết một vài lệnh trên Heroku CLI và Dashboard Những câu lệnh này đều có sẵn trong tài liệu của Heroku Š Tại sao Heroku thu hút người dùng?
* Cung cấp trải nghiệm người dùng tốt nhất
- Heroku là thiên đường cho các nhà phát triển vì nó được xây dựng bởi chính các nhà phát triên Họ hiệu chính xác developers cân gì và có thê gặp khó khăn gì khi sử dụng dịch vụ của họ
Trang 8- _ Các nhà phát triển có thể xây dựng ứng dung của họ trên bất kỳ ngôn ngữ nào, cho dù đó là Nodejs, Ruby, PHP, Python hay Java
- _ Hơn nữa, Heroku còn có một danh sách Heroku Add-ons khong 16, tich hop các chức năng mạnh mẽ giúp bạn triển khai ứng dụng chỉ bằng một cú click Heroku cung cấp cả add-on miễn phí và trả phí, nhưng chúng đều giúp bạn tiết kiệm đáng kể thời gian triển khai dự án
x_ Hồ trợ kêt nôi với salesforce
- V6i phién ban Heroku Connect, Heroku có thê kêt nôi với salesforce, cho phép ứng dụng của bạn đông bộ hai chiêu với salesforce Từ đó, bạn sé dé dàng mở rộng quy mô và luôn có cái nhìn tổng quát về khách hàng
của mình
6 Các phiên bản của Heroku 6.1 Heroku Postgres
Heroku Postgres la dich vu co sé dit ligu dam may dua trén PostgreQuery Heroku Postgres co kha nang bao vé lién tục, khôi phục và có tinh săn sàng cao 6.2 Heroku Redis
Heroku Redis là bản tùy chỉnh từ Heroku, cung cấp trải nghiệm tốt hơn cho người dùng Heroku Redis giúp quản lý các phiên bản với CLL liên kết đữ liệu với Postgres để hiểu rõ hơn về doanh nghiệp băng các công cụ SQL
6.3 Heroku Teams
Heroku Teams là một công cụ quản lý nhóm, kết hợp nhiều nhà phát triển lại với nhau để xây dựng phần mềm tốt hơn Các nhóm này có thể tự tổ chức, kiểm soát, thêm thành viên và sử dụng các công cụ cộng tác như Heroku Pipelines 6.4 Heroku Enterprise
Heroku Enterprise danh riêng cho các công ty lớn, giúp họ cải thiện sự hợp tác giữa các nhóm khác nhau Nó cung cấp một tập hợp các tính năng như kiểm soát truy cập chỉ tiết, liên kết danh tính và không gian riêng để quản lý quy trình phát triển ứng dụng doanh nghiệp, tài nguyên và người dùng của họ
Trang 9Heroku Connect cho phép người dùng sở hữu ứng dụng Heroku dễ dàng tích hợp với các salesforce linh hoạt, nhờ đồng bộ hóa dữ liệu liền mạch giữa cơ sở dữ liệu Heroku Postgres và các tô chức salesforce
6.6 Heroku Elements
Heroku Elements cung cap cac add-on va dich vu dé phat trién, m6 rong va van hành ứng dụng, tự động hóa các quy trình xây dựng cho các ngôn ngữ và frameworks phô biến Đồng thời và cung cấp tính năng One-Cliek, cầu hình và triển khai các thành phần của bên thứ ba, cũng như thư viện và ứng dụng mẫu
7 Ưu và nhược điểm Heroku
7.1 Ưu điểm
- Database hoan toàn miễn phí - SSL sử dụng miễn phí
- Có khả năng hỗ trợ làm việc dành cho team
- _ Có thể liên kết với các loại Github đơn giản nhất
7.2 Nhược điểm
- Heroku chỉ dành riêng cho người dùng sử dụng 550 giờ/tháng Tuy nhiên, bạn có thể gia tăng số giờ sử dụng lên 1000 nếu như bạn đã cài phương thức thanh toán vào trong tài khoản của mình 1000 giờ này là đủ để cho một blog cá nhân hoạt động đều đặn, êm ái trong một tháng
- Chỉ sau từ 2 đến 3 giờ nếu như server không thu hút được người truy cập thì nó sẽ tự động chuyển sang trạng thái ngủ Nếu như server bị tắt đột ngột khi không có traffic thì cách đơn giản bạn can lam 1a tu tao ra traffic cho nó Bạn có thể sử dụng Pingdom để ping trang blog của mình thường xuyên và đảm bảo sao cho server không bị tắt
8$ Cách đưa ứng dụng lên Heroku Bước I: Cài Heroku CLI
Trang 10devcenter.heroku.com/articles/heroku-cli#download-and-install oe
Download and install
© The Heroku CLI requires Git, the popular version control system If you don’t already have Git installed, complete the following before installing the CLI:
¢ Git installation ¢ First-time Git setup
A Currently, the Windows installers may display a warning titled “Windows protected your PC” To run the installation when this warning is shown, click “More info”, verify the publisher as “salesforce.com, inc”, then click the “Run anyway” button
@ macOS ts Windows
Download the appropriate $ brew tap heroku/brew && brew install heroku installer for your Windows installation: 64-bit installer IS 8 B ) w Oe a eras Chọn phiên bản phù hợp với Windows tôi tải Sau khi tải xong nhắn vào để tiễn hành cài đặt
Choose Componerts - vente
Choose which features of heroku you want to install (2
Check the components you want to install and uncheck the components you don't want to
install Click Next to continue
Select components to install: | [7] heroku CLI 7.53.0 Description
Set PATH to heroku
Add %LOCALAPPDATA%
Space required: 137.0MB
Next > Cancel
Trang 11View
Sort by
Refresh
Open in Windows Terminal
Git GUI Here Git Bash Here
Open with Code
NVIDIA Control Panel ea Display settings Personalize chưa có tài khoản bạn hffps://signup.heroku.com/login 8_ signup.heroku.com/login @ Free account
Create apps, connect databases and add-on services, and collaborate on your apps, for free
©) Your app platform
A platform for apps, with app management & instant scaling, for development and production
@ Deploy now
Go from code to running app in minutes Deploy, scale, and deliver your app to the world
Trang 12MP Loki (phan 1) - Loki HEROKU O Personal ¢ Q calculator-nguquahtrua calculatorzzz nguquahtrua-doancalculator avorites, Apps, Pipelines, Spaces | New © |
heroku-20 - United States PHP - heroku-20 + United States PHP - heroku-20 + United States SeaTac) oe & @ = dashboard.heroku.co Loki (phan 1) - Loki Q Personal ¢ calculator-nguquahtrua calculatorzzz nguquahtrua-doancalculator https://dashboard.heroku.com/new-app?org=personal-apps we Jump to Favorites, Apps, Pipelines, Spaces DỘ Đặt tên cho app rồi chọn Create app | New © @ Create new app @‹ heroku-20 + United States
PHP + heroku-20 + United States
Trang 13MP Loki (phan 1) - Loki orce Platform HEROKU Jump to Favorites, Apps, Pipelines, Spaces Create New App App name doancalculator Qo doancalculator is available Choose a region = United States | Add to pipeline | heroku.com Blogs Sau khi Create app sé dua dén phan tiép theo @ = dashboard heroku.com/apps/doancalculator/deploy/heroku-git ÑẾ Loki (phần 1) - Loki HEROKU Jump to ps, Pipeline: Q Personal ¢ > doancalculator % Open app More © |
Overview Metrics Activity Access Settings
Add this app to a pipeline Add this app to a stage in a pipeline to enable additional features
Create ainew pipeline or choose an existing Pipelines let you connect multiple apps Noe Pipeline ted to GitHub can enable review
one and acd) Wiis Pp tc a ther and promote code between them apps, and create apps for pull requests a Learn more 3 @ Learn more
@ Choose a pipeline
Deployment method
Deploy using Heroku Git Install the Heroku CLI
e command line or a GUI tool to Download and install the Heroku CLI If you haven't already, log in to your Heroku a int and follow the prompts to c te a new SSH public key
Trang 14® — 127.0.0.1:5500/index.html MP Loki (phan 1) - Loki Dark Mode Tiếp theo là phần push app lên heroku 9:01 CH 2/2022 SN N2, Đầu tiên là vào folder chứa app và bam chuột trái chọn Git Bash Here l8 Calculator @® New » WN Sort v =¬
> Project do héa > Calculator >
Quick access Hee shea ee EBbpeskop git /2021 9:11 CH File folder £ Downloads _ s01 18:49 Dễ co E Documents L4 Pictures |” NT riei titer 30/12/2021 9:06 CH HTML Document cs 30/12/2021 8:49 CH File folder
La) BB index 30/12/2021 9:13 CH PHP Source File
Trang 15Fd
GF65@MS ~/Desktop/Pro1Ject ảo hóa/Calculator (master)
$ heroku login
Warning: heroku update available from 7.53.0 to 7.59.2
heroku: Press any key to open up the browser to login or q to exit: a
Opening browser to https://cli-auth.heroku.com/auth/cli/browser/b36e5dee-7425-44
04-ac9b-c5878d45c489?reques tor=SFMyNTY g2gDbQAAAA4 xM JMuM j AUMTAAL j LxNG4GANh 1 9RV-A
WIAAVGA u5bISGp-jpOPBS1isJYSYeHmtEV_S5d1FYH5wiT_sbFI heroku: Waiting for login
Logging in done
Logged in as phuongb1nh221120016gma1 Ì com
ACACTerminate batch job (Y/N)? Y
`
Sau khi nhập heroku login thì web sẽ tự động mở trang đăng nhập và nhân đăng nhập vào trang web
8 cl-auth.heroku.com/auth/cli/callback 1) - Loki
We use cookies to make interactions with our websites and services easy and meaningful, to better understand how they are used and to tailor advertising You can read more and ) kie ere By continuing to use this site you are giving us your consent to do this s » HEROKU Logged In Heroku is a Terms of Service Privacy Cookies © 2022 Salesforce.com mm = 0 #8 G œ : vy x a =-_ —~ os 9:07 CH
Sau đó nhập tiếp lệnh git init để khởi tạo app
GE65@MST ~/Desktop/Project 40 hoa/Calculator (master)
Xin là:
Reinitialized existing Git repository in C:/Users/GF65/Desktop/Project 40 hoa/Calculator/.git/
Nhập tiếp lệnh heroku git:remote -a doancalculator để chạy lệnh kiểm tra xem app có thay đôi hay thêm xóa sửa gì không
GF65@MS ~/Desktop/Project 40 hoa/Calculator (master)
$ heroku git:remote -a doancalculator
Warning: heroku update available from 7.53.0 to 7.59.2 set git remote heroku to https://git.heroku.com/doancalculator.git
Nhập tiếp lénh git add va git commit -am “tao cau dé ngudi khac biét là sửa gì hay tạo mới cái gì đó”
Trang 16GF65@MST ~/Desktop/Project 40 hoa/Calculator (master) $ git add
GF65@MSI ~/Desktop/Project 40 hoa/Calculator (master)
$ git commit -am "create new project" On branch master
Your branch is ahead of ‘origin/master’ by 2 commits (use "git push" to publish your local commits) nothing to commit, working tree clean
Cuối cùng là lệnh git push heroku master dé push app én heroku
Ko
GF65@MST ~/Desktop/Project ảo hóa/Calculator (master) git push heroku master
Enumerating objects: 159, done Counting objects: 10 (159/159), done
Delta compression using up to 8 threads
Compressing objects: (68/68), done
Writing objects: 1( (159/159), 40.01 KiB | 13.34 MiB/s, done
Total 159 (delta 85), reused 152 (delta 84), pack-reused 0 remote: Compressing source files done
remote: Building source:
Building on the Heroku-20 stack
Determining which buildpack to use for this app PHP app detected
WARNING: No ‘composer.json' found!
Your project only contains an ‘index.php’, no ‘composer.json’ Using ‘index.php’ to declare app type as PHP is deprecated and may lead to unexpected behavior
Please consider updating your codebase to utilize Composer and modern dependency management in order to benefit from the latest PHP runtimes and improved application performance, as well as control over the PHP versions and extensions available For an introduction to dependency management with Composer and https: //getcomposer.org/doc/00-intro.md and
https: //devcenter.heroku.com/articles/getting-started-with-php Bootstrapping
Installing platform packages
NOTICE: No runtime required in composer.lock; using PHP 47.3.0 | A8.0.0 - php (8.1.1) composer (1.10.24) - apache (2.4.51) - nginx (1.20.2) Installing dependencies Composer version 1.10.24 2021-12-09 20:06:33 Preparing runtime environment
NOTICE: No Procfile, using 'web: heroku-php-apache2' > Checking for additional extensions to install
Discovering process types Procfile declares types -> web > Compressing
Done: 15.5M
Launching Released v3
https: //doancalculator.herokuapp.com/ deployed to Heroku remote: Verifying deploy done
To https://git.heroku.com/doancalculator.git * [new branch] master -> master
Vậy là xong tiếp theo chọn nút Open app dé xem kết quả
Trang 17@ = dashboard.heroku.com/apps/doancalculator/deploy/heroku-git Ñ Loki (phần 1) - Lok
HEROKU Jump to Favorites, Apps, Pipelines, Spaces
@) Personal ¢ > wo doancalculator 5 Openapp || More ¢ |
Open Application
O Resources Depl tr Activity Access Settings
Add this app to a stage in a pipeline to enable additional features
Pipelines let you connect multiple apps n @ Pipeline ted to GitHub can enable
together and promote code between them apps, and create apps for new pull requests
3 Learn more © @ Learn more @ Choose a pipeline Deployment method Deploy using Heroku Git Install the Heroku CLI
Use git in the command line or a GUI tool to and install the Heroku CLI
deploy this app : jog in to your Heroku account and follow the prompts to create a new SSH public key ee https://doancalculator.herokuapp.com 01/01/2022 9 a 3: | Vy) = A A ENG % dì #2 kinh Kết quả đạt được: đf doancalculator - Heroku @ Calculator 8 doancalculator.herokuapp.com/index ÑỮ Loki (phần 1) - Lok Calculator Result Dark Mode oO 8 BoB ® ie a ZENG ee
Sau khi có được trang web đê share cho người khác có thê vào được đê xem và sử dụng Link vào app của nhóm:
https://doancalculator.herokuapp.com/index html
Như vậy nhóm vừa trình bày xong cách để đưa ứng dụng lên heroku