Tải bản đầy đủ (.pdf) (34 trang)

Báo cáo thực tập phát triển hệ thống với AMAZON WEB SERVICES

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (690.65 KB, 34 trang )

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM

BÁO CÁO THỰC TẬP

PHÁT TRIỂN HỆ THỐNG VỚI
AMAZON WEB SERVICES

Công ty thực tập

: TechXCorp

Người phụ trách

: anh Lê Minh Ân

Thực tập sinh

: Nguyễn Duy Minh

TP. Hồ Chí Minh, tháng 12 năm 2020


Nội dung
LỜI MỞ ĐẦU ............................................................................................................................... 3
Chương 1: Giới thiệu công ty thực tập ...................................................................................... 7
1.

Giới thiệu công ty TechX ................................................................................................. 7

Chương 2: Nội dung thực tập ..................................................................................................... 8


1.

Tìm hiểu cơng ty và các kỹ năng cơ bản trong công ty ................................................... 8

2.

Nghiên cứu kỹ thuật ......................................................................................................... 8
1.1 Làm quen với Python .................................................................................................... 8
1.2 Tìm hiểu và phát triển ứng dụng cơ bản với Django .................................................... 8
1.3 Tìm hiểu mơ hình serverless, nền tảng AWS và các service phổ biến. ........................ 9
1.4 Tìm hiểu các service nền tảng trên AWS và cách sử dụng......................................... 10

Chương 3: Chi tiết về project ................................................................................................... 14
1.

Giới thiệu về project ....................................................................................................... 14

2.

Usecases ......................................................................................................................... 15

3.

Sequence diagrams ......................................................................................................... 17

4.

Cơ sở đữ liệu .................................................................................................................. 30

Tài liệu tham khảo ..................................................................................................................... 33

TỔNG KẾT ................................................................................................................................ 34

2


LỜI MỞ ĐẦU

Hiện nay, khi công nghệ ngày càng phát triển, nhu cầu về việc triển khai các dịch vụ và
phát triển hệ thống trên internet gia tăng đáng kể. Để đáp ứng được các u cầu đó địi
hỏi các nhà phát triển cần phải tiến tới các giải pháp công nghệ tối ưu và mang lại hiệu
quả cao nhất về mặt nhân lực, chi phí và thời gian.
Cloud computing có thể được xem như 1 xu hướng cơng nghệ mới, nơi mà mọi dữ liệu,
dịch vụ đều được lưu trữ, triển khai trên internet. Việc đưa hệ thống lên đám mây giúp
người dùng có thể tiếp cận và sử dụng dễ dàng hơn thay vì phải cài đặt local trên máy
tính cá nhân, đồng thời đáp ứng nhu cầu kết nối, chia sẻ giữa hàng triệu người dùng với
nhau. Một trong những giải pháp cho Cloud Computing đang được ứng dụng phổ biến
chính là Serverless + Microservices.
Microservices là 1 kiến trúc hệ thống cho phép chúng ta phát triển, vận hành và triển
khai các dịch vụ (service) một cách độc lập với nhau. Các service này có thể giao tiếp với
nhau thông qua 1 chuẩn nhất định (TCP, HTTP, …). Đó là một trong những ưu điểm và
lí do mà Microservices được sử dụng rất nhiều trên các hệ thống Cloud (Google,
Amazon, …).
Serverless (trái ngược với Server) là một mơ hình phát triển hệ thống mà tại đó, việc xây
dựng ứng dụng được tách rời độc lập với cầu hình của hệ thống (Server). Hay nói cách
khác, các nhà phát triển trên mơ hình Serverless khơng cần phải quan tâm nhiều về các
về đề của phần cứng như RAM, bộ nhớ, cầu hình máy, băng thơng, khả năng chịu tải, …
Với những đặc điểm kể trên, chúng ta có thể thấy Microservices là 1 kiến trúc tối ưu khi
đưa vào mơ hình Serverless. Các vấn đề của phần cứng giờ đây sẽ do các service đảm

3



nhiệm. Các nhà phát triển chỉ cần khai báo những thông số cần thiết để tối ưu việc sử
dụng các service cho phù hợp với nhu cầu của hệ thống.
Amazon Web Services (AWS) là một nền tảng cho phép chúng ta phát triển hệ thống
Serverless. AWS cung cấp một số lượng lớn các Service nhằm giúp tối ưu quá trình phát
triển hệ thống, đồng thời đảm bảo hiệu suất cao nhất khi các hệ thống này được triển
khai.

4


LỜI CẢM ƠN

Trân trọng gửi lời cảm ơn Công ty TechXCorp đã tạo điều kiện cho em có cơ hội được
thực tập tại công ty.
Chỉ trong một thời gian ngắn, nhưng nhờ sự chỉ dẫn chu đáo của các anh mentor, em đã
có cơ hội được tiếp cân, học hỏi cách phát triển ứng dụng trên hệ thông AWS cũng như cách
làm việc trong môi trường thực tế.
Đặc biệt cảm ơn anh Ân, mentor chính, đã hướng dẫn, giúp đỡ cho em tận tình cả những
khó khăn trong q trình thực tập; cảm ơn anh Trần Quốc Việt đã giúp em làm quen với môi
trường làm việc và giúp đỡ em khắc phục những thiếu sót cá nhân.
Cũng xin cảm ơn thầy cô trong khoa Công nghệ phần mềm đã nhiệt tình hỗ trợ, tạo điều
kiện em làm bài báo cáo này.

Nguyễn Duy Minh
TP Hồ Chí Minh, 29/12/2020

5



NHẬN XÉT CỦA KHOA

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

6


Chương 1: Giới thiệu công ty thực tập

1. Giới thiệu công ty TechX
TechX là được công ty thành lập nhằm xây dựng hệ thống và cung cấp các giải pháp công nghệ
liên quan tới Cloud Computing cho các doanh nghiệp. Dù chỉ mới được thành lập trong thời
gian không lâu nhưng với đội ngũ phát triển giàu kinh nghiệm, TechX đã có những sản phẩm

chất lượng, đáp ứng nhu cầu cho hàng triệu người dùng. Các đối tác lớn của TechX có AWS,
Oracle, SaleForce, …

7


Chương 2: Nội dung thực tập
Đợt thực tập với chủ đề “Phát triển ứng dụng serverless trên AWS” nhằm mục đích giúp sinh
viên thực tập được có cơ hội học hỏi và làm quen với mơ hình serveless, nền tảng AWS và các
khái niệm cũng như cách sử dụng các dịch vụ (service) trên AWS. Tại công ty, sinh viên có cơ
hội được học tập, khám phá và làm việc trong một mơi trường năng động và tích cực.

1. Tìm hiểu công ty và các kỹ năng cơ bản trong công ty
Thời gian : 1 ngày
Nội dung : Giới thiệu về công ty và các thành viên trong công ty.
Được nghe người phụ trách giới thiệu về công ty, quá trình thành lập và phát triên (như đã

-

nhắc đến ở trên) cũng như đội ngũ nhân lực của cơng ty.
Ngồi ra, thực tập sinh còn được giới thiệu về cách thức làm việc trong công ty như thời

-

gian đi làm, các quy định cần phải tuân thủ, cách thức liên lạc, hỏi đáp, …
Kết quả :
Hiểu thêm về công ty TechX, quá trình thành lập và phát triển và các thành viên trong team.

2. Nghiên cứu kỹ thuật
1.1 Làm quen với Python

Thời gian : 4 ngày
Nội dung : Tìm hiểu về ngôn ngữ Python, cách setup project và pip
Kết quả : Hiểu cơ bản về cách hoạt động và các package cơ bản của Python.
1.2 Tìm hiểu và phát triển ứng dụng cơ bản với Django
Thời gian : 3 tuần
Nội dung : Tìm hiểu và phát triển ứng dụng web sử dụng framework Django.
8


-

Cách khởi tạo project, hiểu cấu trúc project và sử dụng các chức năng cơ bản của Django
CLI như tạo app, tạo model, tạo controller, …

-

Các khái niệm và thành phần của Django framework như Model, Controller, View, API
View, Middleware.

-

Cách cài đặt và sử dụng các package bên thứ 3.

-

Deploy sản phẩm lên Heroku.

Thực hiện: Phát triển 1 ứng dụng web đơn giản.
Kết quả :
-


Nâng cao hiểu biết và làm quen dần với việc sử dụng Python.

-

Nắm được cách hoạt động của RESTful API, các cài đặt các chức năng quan trọng như
xác thực, phân quyền, bảo mật hệ thống.

1.3 Tìm hiểu mơ hình serverless, nền tảng AWS và các service phổ biến.
Nội dung: Các kiến thức cơ bản về serverless, AWS và các khái niệm cơ bản và cách thức
hoạt động của AWS Services.
Khái niệm cơ bản về Serverless Computing
-

Serviceless Computing là một giải pháp cung cấp dịch vụ hệ thống dựa trên nhu cầu sử
dụng của người dùng. Nó cho phép chúng ta cài đặt và triển khai code mà không phải
bận tâm về hạ tầng dịch vụ (hệ điều hành, băng thơng, bộ nhớ, …)

Chi phí sử dụng phụ thuộc vào nhu cầu sử dụng.
-

Đa phần các nhà cung cấp dịch vụ serverless đều đưa ra giải pháp Function-as-aService (FaaS). Các developer làm việc độc lập trên các Function này. Điều này giúp
đơn giản hóa code base và nâng cao khả năng module hóa.

9


AWS Cloud
-


AWS Cloud là 1 nền tảng đám mây do Amazon phát triển. Các dịch vụ phổ biến nhất
trên Amazon gồm có như server, lưu trữ, networking, database, máy học, …

-

AWS hiện có mặt tại hơn 76 khu vực. Người dùng có thể chọn khu vực phù hợp về mặt
địa lý và sản phẩm để giảm thiểu những hạn chế về độ trễ và tăng tính ổn định.

Thực hiện :
-

Xem khóa học cơ bản về Serverless và AWS trên Udemy.

Kết quả:
-

Nắm được khái niệm Serverless và kiến trúc Microservices.

-

Hiểu được cơ bản nền tảng AWS.

1.4 Tìm hiểu các service nền tảng trên AWS và cách sử dụng
Thời gian: 3 tuần
Nội dung: Tìm hiểu và nắm vững các service cốt lõi của AWS và cách sử dụng CDK để
thao tác lên các service.
IAM (Identity Access Management)
-

IAM là 1 service cho phép chúng ta kiểm soát và bảo mật quyền truy cập đến các tài

ngun của AWS. IAM đóng vai trị trung tâm trong việc xác thực và phân quyền trên
hệ thống AWS.

-

IAM cho phép chúng ta:
o Kiểm soát quyền truy cập của các tài khoản AWS.
o Chia sẻ quyền truy cập
o Hỗ trợ nhiều cách thức cung cấp quyền truy cập
10


o Xác thực nhiều lớp
o Cung cấp quyền truy cập tạm thời cho người dùng / thiết bị / service.
S3 (Simple Storage Service)
-

S3 là service hỗ trợ việc lưu trữ và quản lí các file.một cách bảo mật và chia sẻ trên nhiều
thiết bị khác nhau.

-

S3 là dịch vụ lưu trữ kiểu object. Mỗi file được xem như 1 object với cấu hình của riêng
nó (tên file, phiên bản, định dạng, …).

-

S3 là dịch vụ đồng nhất (tất cả các khu vực đều truy cập chung 1 miền dịch vụ).

-


S3 sử dụng giao thức HTTPS để tương tác với hệ thống và các service khác.

DynamoDB
-

DynamoDB là 1 NoSQL database cho khả năng truy xuất nhanh và linh động.

-

DynamoDB hỗ trợ cả model kiểu document và key-value.

-

Sử dụng giao thức HTTP/HTTPS để tương tác với các dịch vụ khác.

-

Có khả năng scale tự động và sao lưu dữ liệu khi số lượng request có biến động.

Lambda
-

Lambda là 1 computing service cho phép chúng ta cài đặt và thực thi code mà khơng cần
phải cung cấp hay quản lí server. Mỗi lambda là một container độc lập với môi trường
thực thi riêng và những cấu hình riêng.

-

Lambda đóng vai trị trung tâm xoay quanh kiến trúc AWS Serverless. Các developers sử

dụng Lambda để xây dựng những service riêng và tương tác trên tồn bộ nền tảng AWS.

-

Lambda có thể scale tự động, chúng ta không cần quan tâm về việc service bị sập hoặc
có lỗi xảy ra khi lượng request tăng đột biến.

-

Lambda cho phép chúng ta:
o Thực thi code như 1 handler từ sự kiện được phát đi của 1 service khác.
11


o Thực thi xử lý khi có request gửi xuống từ service API Gateway.
o Gọi tới 1 service bất kỳ thơng qua AWS SDK.
-

Lambda cho phép setup các cấu hình như biến môi trường, bộ nhớ cấp phát, thời gian
timeout, …

-

Hỗ trợ test.

-

Layers: hỗ trợ chúng ta thêm các thư viện hoặc package thứ 3 mà Lambda cần.

API Gateway

-

API Gateway là 1 service hỗ trợ việc tạo, public, theo dõi và bảo mật REST, HTTP API.

-

Với API Gateway, chúng ta có thể tạo nên 1 gateway để tương tác giữa client và ứng
dụng mà không cần phải quan tâm về phần xử lý ở backend.

-

API Gateway có thể:
o Tạo HTTP APIs.
o Tạo REST APIs.
o Tạo WebSocket APIs.

-

Với mỗi collection của API, chúng ta có thể deploy nhiều phiên bản khác nhau.

-

Authorizer: là 1 Lambda cho phép chúng ta kiểm soát quyền truy cập của API trước khi
request được xử lý.

Thực hiện :
-

Xem khóa học trên Udemy.


-

Thực hành trên AWS.

12


Kết quả:
-

Nắm rõ các khái niệm của các service trên AWS.

-

Hiểu được cách thức hoạt động và cách sử dụng các service.

2. Thực hiện project
- Sau hơn 1 tháng làm quen với các khái niệm và cách sử dụng cơ bản các service
AWS, bước tiếp theo là xây dựng 1 ứng dụng đơn giản nhằm áp dụng và củng cổ
những kiến thức đã học cũng như học hỏi về cách các chức năng được thực hiện
trong thực tế.

13


Chương 3: Chi tiết về project
1. Giới thiệu về project
Xây dựng một ứng dụng web hồn chỉnh để quản lí các thành phần trong game.
Khi xây dựng 1 game, một trong những cơng việc quan trọng, đó là quản lí các tài nguyên của
game. Cụ thể, ở đây, ứng dụng sẽ quản lí các game map, dữ liệu của các map, các tài nguyên

hình ảnh, file, các đối tượng database, …
Ngồi ra, ứng dụng cịn quản lí người dùng với việc quản lí tài khoản, đăng nhập, xác thực, …

14


2. Usecases

15


Mơ tả Usecases:
-

Đăng nhập

-

Đăng ký: người dùng có thể đăng ký tài khoản mới

-

Tạo map mới: người dùng có thể tạo map mới và chia sẻ với người dùng khác.

-

Cập nhật map: Trong trường hợp map quá khó để chơi thì người dùng có thể chỉnh sửa
map tùy ý.

-


Xem thơng tin của map: Sau khi đăng nhập, người dùng có thể xem thông tin cụ thể của
1 map. Các thông tin của map bao gồm: tên của map, người tạo, thời gian chỉnh sửa, …

-

Lưu lại trạng thái game: Trước khi người dùng chơi 1 map nào đó, trạng thái game của
người dùng sẽ được tạo tự động. Trong quá trình chơi, người dùng có thể lưu lại trạng
thái map mình đang chơi.

-

Lấy thơng tin trạng thái của game: người chơi có thể xem thơng tin về trạng thái chơi của
1 map cụ thể. Map nào đã hoàn thành, đang thực hiện hoặc chưa vượt qua, …

16


3. Sequence diagrams
a. Đăng nhập

17


b. Đăng ký tài khoản mới

18


c. Cập nhật tài khoản


19


d. Cập nhật thông tin cá nhân

20


e. Lấy access token

21


f. Lấy thông tin người dùng theo ID

22


g. Tạo map mới

23


h. Cập nhật map

24


i. Lấy thông tin map theo ID


25


×