1. Trang chủ
  2. » Cao đẳng - Đại học

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

34 14 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 34
Dung lượng 690,65 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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àn

Trang 1

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

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

Trang 2

2

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

Trang 3

3

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 yê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

Trang 5

5

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 quá 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

Trang 6

6

NHẬN XÉT CỦA KHOA

Trang 7

7

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, …

Trang 8

8

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

- Ngoà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

-

Trang 9

- 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-a-Service (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

Trang 10

10

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 nguyên 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

Trang 11

11

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 toà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

Trang 12

12

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

-

Trang 13

13

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ế

Trang 14

14

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 hoà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, …

Ngoà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, …

Trang 15

15

2 Usecases

Trang 16

16

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, …

Trang 17

17

3 Sequence diagrams

a Đăng nhập

Trang 18

18

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

Trang 19

19

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

Trang 20

20

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

Trang 21

21

e Lấy access token

Trang 22

22

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

Trang 23

23

g Tạo map mới

Trang 24

24

h Cập nhật map

Trang 25

25

i Lấy thông tin map theo ID

Trang 26

26

j Lấy danh sách map

Trang 27

27

k Tạo trạng thái game

Trang 28

28

l Lấy thông tin trạng thái game

Trang 29

29

m Xử lí phân quyền cho request

Trang 30

user_id string Partition key ID của user

Trang 31

31

game_map

created_by string Partition key ID của người dùng đã tạo map

last_edited datetime Sort key Thời gian lần cuối map được cập

nhật

map_file_url string URL của file chứa thông tin của map map_image_url string URL của hình nền của map

game_state

user string Partition key ID của người dùng với trạng thái

game này

game_map string Sort key ID của map tương ứng với trạng thái

của game saved_date datetime Thời gian mà trạng thái được lưu

Trang 32

32

Profile (document con của bảng user)

family_name string Họ của người dùng

given_name string Tên của người dùng

picture string URL của avatar người dùng

Trang 33

33

Tài liệu tham khảo

AWS Documentation: https://docs.aws.amazon.com/

Github repository: https://github.com/minhnguyenduy99/aws-game-api

Trang 34

34

TỔNG KẾT

Như vậy, trong vòng 2 tháng, em đã học hỏi và tạo được 1 web app đơn giản trên nền tảng AWS Tuy chức năng còn đơn giản và chưa áp dụng nhiều kỹ thuật cao nhưng em đã có cơ hội được tiếp cận với công nghệ mới và một phần học hỏi được cách thức thực hiện 1 project trong thực tế thông qua sự hướng dẫn của anh mentor

Chân thành cảm ơn sự giúp đỡ của anh Ân đã hỗ trợ em trong quá trình thực hiện project

Ngày đăng: 05/09/2021, 21:06

TỪ KHÓA LIÊN QUAN

w