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

báo cáo thực tập xây dựng CHATAPP và triển khai với DOCKER và KUBERNETES

23 73 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 23
Dung lượng 612,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

Vì thế, để đáp ứng được các yêu cầu của doanh nghiệp khi tham gia tuyển dụng, nhà trường đã tạo điều kiện cho sinh viên được tiếp xúc trực tiếp với các doanh nghiệp khi còn ngồi trên ghế

Trang 1

KHOA CÔNG NGHỆ PHẦN MỀM

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

XÂY DỰNG CHATAPP VÀ TRIỂN KHAI VỚI DOCKER VÀ KUBERNETES

Công ty thực tập : DEK TECHNOLOGY

Người phụ trách : Lâm Khang

Thực tập sinh : Nguyễn Tiến Đạt

TP.HỒ CHÍ MINH, 2020

Trang 2

LỜI MỞ ĐẦU

Quá trình học tập ở đại học đã giúp sinh viên có được các kiến thức cơ bản về lý thuyết và thực hành Tuy nhiên, với khối lượng kiến thức được học vẫn chưa đủ để sinh viên có thể áp dụng vào việc làm thực tế Vì thế, để đáp ứng được các yêu cầu của doanh nghiệp khi tham gia tuyển dụng, nhà trường đã tạo điều kiện cho sinh viên được tiếp xúc trực tiếp với các doanh nghiệp khi còn ngồi trên ghế nhà trường để tìm hiểu và làm quen với công việc thực tế Thông qua đó để hiểu rõ hơn về cách điều hành và hoạt động của một doanh nghiệp

Trong thời gian thực tập tại Công ty DEK Technology, em đã tiếp thu được nhiều kiến thức về kỹ năng, tư duy logic và tư duy lập trình Song song đó em có cơ hội được làm quen, thực hiện đóng góp bằng chính những kiến thức mà bản thân em đã học tập được trong quá trình thực tập tại công ty, hiểu về các quy trình làm việc cùng các cách quản lý công việc một cách hiệu quả Ngoài những kiến thức về chuyên môn, em còn được rèn luyện về tinh thần trách nhiệm trong công việc, khả năng chịu

áp lực với công việc, kỹ năng mềm trong giao tiếp, làm việc nhóm giữa các thành viên trong cùng một dự án, quản lý thời gian và làm việc một cách có hiệu quả Qua thời gian tìm hiểu và được thực hành thực tế, em đã có thể xây dựng cho bản thân một quy trình làm việc bài bản và đúng trình tự

Nội dung đề tài gồm 4 chương:

Chương 1: Giới thiệu về công ty

Chương 2: Giới thiệu chương trình thực tập

Chương 3: Nội dung thực tập

Chương 4: Kết luận

Trang 3

Người phụ trách: Lâm Khang Nguyễn Tiến Đạt

LỜI CẢM ƠN

Lời đầu tiên, em xin gửi lời cảm ơn sâu sắc đến tất cả Thầy/Cô của khoa Công nghệ Phần mềm nói riêng và trường Đại học Công nghệ Thông tin – Đại học quốc gia TPHCM nói chung đã tận tình chỉ dạy em các kiến thức cần thiết và đã tạo điều kiện cho em được tiếp xúc với môi trường doanh nghiệp, giúp em tự tin hơn

Tiếp đến, em xin trân thành gửi lời cảm ơn đến Công ty DEK Technology đã 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ờ sự chỉ dẫn của nhóm trainer, em đã tiếp thu được những kiến thức quan trọng về các kĩ năng, tư duy lập trình cũng như các kiến thức liên quan về cách thức hoạt động của một doanh nghiệp Chân thành cảm ơn các anh chị đã dành nhiều thời gian, công sức quý báu của mình để hướng dẫn em hoàn thành chương trình thực tập này

Đặc biệt cảm ơn anh Lâm Khang đã hướng dẫn, giúp đỡ cho em tận tình cả những

khó khăn trong công việc, đến những bất cập khi làm quen với môi trường mới; cảm

ơn chị Ngọc phòng Nhân sự hỗ trợ chúng em rất nhiều về các vấn đề khi làm việc

trong công ty Một lần nữa xin cám ơn các anh chị tại công ty DEK Technology đã giúp đỡ để có thể hoàn thành tốt công việc trong thời gian thực tập tại công ty

Em xin chân thành cảm ơn!

Nguyễn Tiến Đạt TP.HCM, ngày 17 tháng 12 năm 2020

Trang 4

NHẬN XÉT CỦA KHOA

Trang 5

Người phụ trách: Lâm Khang Nguyễn Tiến Đạt

MỤC LỤC

Chương 1 GIỚI THIỆU VỀ CÔNG TY 5Chương 2 GIỚI THIỆU VỀ CHƯƠNG TRÌNH THỰC TẬP 7Chương 3 NỘI DUNG THỰC TẬP 9Chương 4 KẾT LUẬN Error! Bookmark not defined.

TÀI LIỆU THAM KHẢO 21TỔNG KẾT 22

Trang 6

Chương 1 GIỚI THIỆU VỀ CÔNG TY

1.1 Giới thiệu công ty DEK Technologies

DEK Technologies được thành lập tại Melbourne Australia vào năm 1999, với 3

kỹ sư cung cấp dịch vụ phát triển phần mềm và phần cứng cho ngành viễn thông Khi một trong những công ty dịch vụ và thiết bị viễn thông và mạng đa quốc gia lớn nhất thế giới thông báo kết thúc phòng thí nghiệm nghiên cứu và phát triển khu vực tại Melbourne, năm 2002, hơn 450 nhân viên đã bị dư thừa và tìm kiếm việc làm mới Công nghệ DEK nắm lấy cơ hội này để đảm bảo năng lực chuyên môn kỹ thuật và hiện đã phát triển thành một tổ chức toàn cầu

Các kỹ sư làm việc trên các sản phẩm chịu trách nhiệm xử lý 40% (gần 4 tỷ) trong

số các cuộc gọi di động hàng ngày của thế giới Các dự án và nhiệm vụ của công ty trải rộng trên nhiều ngành và quốc gia, với cơ hội mở rộng hơn nữa trong các thị trường toàn cầu

1.2 Sản phẩm của công ty

1 Nghiệp vụ chuyên môn:

- Cung cấp các dịch vụ phát triển phần mềm và phần cứng

- Quản lý, thiết kế và phát triển dự án phần mềm

- Cung cấp nền tảng công nghệ Internet of Things

- Telegea là nền tảng để quản lý và giám sát năng lượng nhiệt

- Phát triển phần mềm và phần cứng trong các lĩnh vực: thông tin viễn thông, y

tế, thương mại điện tử, an toàn và bảo mật,

2 Công nghệ sử dụng:

Trang 7

Người phụ trách: Lâm Khang Nguyễn Tiến Đạt

C/C++, Java, Net, Erlang, Python, Perl, PHP, Unix, Linux, Windows, Android, iOS, 3G, 4G, Kotlin, Objective C, Swift, React Native, Javascript, Bootstrap, Angular, Vue, React JS,

Trang 8

Chương 2 GIỚI THIỆU VỀ CHƯƠNG TRÌNH THỰC TẬP

2.1 Tổng quan về chương trình thực tập

Tham gia chương trình thực tập theo chuẩn đào tạo đầu vào của công ty các kiến thức về C++, hệ điều hành Linux, Kubernetes, Gitlab, CI/CD các công cụ như MobaXterm, Visual Code

Quản lý, thiết kế và phát triển phần mềm Availability Chat Application đã được

đề ra theo quy trình quản lý Scrum/Agile

Cuối chương trình, hoàn thành sản phẩm đề ra theo yêu cầu của công ty, demo và báo cáo kết quả sản phẩm

2.2 Các quyền và nghĩa vụ của thực tập sinh

- Sử dụng máy tính do công ty cung cấp

- Miễn phí đồ uống (Milo, vinamilk, trà, cà phê, …)

- Sau khi hoàn thành chương trình đào tạo, công ty tạo điều kiện cho sinh viên

có thể trở thành nhân viên chính thức của công ty

2.3 Thời gian thực tập

Chương trình thực tập kéo dài 2.5 tháng (10 tuần) từ 30/08/2020 đến 09/10/2020 Thời gian thực tập tại công ty:

Trang 9

Người phụ trách: Lâm Khang Nguyễn Tiến Đạt

- Trong thời gian thực tập, thực tập sinh phải làm việt ít nhất 3.5 ngày / tuần

- Mỗi ngày làm việc 8 giờ

Trang 10

Chương 3 NỘI DUNG THỰC TẬP

Đợt thực tập với chủ đề “Xây dựng ứng dụng chat có tính khả dụng cao trên nền tảng Linux/Ubuntu” Ngoài việc tập trung vào thiết kế và phát triển có áp dụng quy trình phát triển phần mềm Scrum/Agile, đợt thực tập còn giúp sinh viên tiếp cận các công nghệ mới hiện nay như triển khai ứng dụng với Docker và Kubernetes Rèn luyện các kỹ năng mềm như làm việc nhóm, giao tiếp và demo sản phẩm mỗi sprint bằng tiếng Anh

3.1 Giới thiệu về công ty và yêu cầu đối với nhân viên

Thời gian: 1 tuần

Nội dung: Giới thiệu về công ty, cách thức tổ chức nhân sự và cách làm việc của nhân viên trong công ty Được nghe những anh chị phụ trách của phòng nhân sự giới thiệu về công ty; quá trình thành lập, phát triển; cơ cấu tổ chức; quy trình làm việc Ngoài ra, thực tập sinh còn được giới thiệu về chương trình thực tập, quyền và nghĩa

vụ của thực tập sinh

Kết quả: Hiểu thêm về công ty DEK Technologies, quá trình hình thành và phát triển Sử dụng các công cụ giao tiếp, quản lý công việc, kế hoạch hiểu quả và chuyển nghiệp hơn

3.2 Traning về công nghệ

3.2.1 Các công cụ làm việc

Thời gian: 1 tuần

Nội dung: Tìm hiểu về các công cụ sẽ được sử dụng trong quá trình làm việc Một

số phần mềm trong số đó như VirtualBox (quy định công ty chỉ cho phép phát triển phần mềm trên máy ảo), Quản lý source code GitLab & CICD, MobaExterm để remote access vào máy ảo, Làm việc và giao tiếp thông qua Skype,

Kết quả : Lập trình sử dụng các công cụ miễn phí, giúp dễ dàng kết hợp các công

cụ với nhau, so với việc dùng các IDE

Trang 11

Người phụ trách: Lâm Khang Nguyễn Tiến Đạt

3.2.2 C/C++ Project trên Ubuntu

Thời gian: 1 tuần

Nội dung: Tìm hiểu và làm quen với hệ điều hành Ubuntu, vì đây là nền tảng mà ứng dụng sẽ phát triển và triển khai Học cách tự tạo project C/C++ bằng các công cụ trên Ubuntu như CMake, Ninja Build Không giống như việc phát triển C/C++ project trển Window, Ubuntu không có Visual Studio làm IDE

Kết quả: Làm quen và thành thạo các thao tác sử dụng hệ điều hành Ubuntu Xây dựng được một cấu trúc mẫu cho chương trình C/C++ trên Ubuntu

3.3 Thực hiện project

Sau một tuần đầu làm quen với môi trường làm việc, tiếp cận và làm quen với các kiến thức mới Thực tập sinh đã nắm được các phương pháp cơ bản để thực hiện với project C/C++ trên Ubuntu Các tuần sau, trainer sẽ hướng dẫn thực hiện project theo quy trình phát triển phần mềm Scrum/Agile

- Training coporate policy

- Training Agile, GIT, CI

Chị Kim Ngọc Chị Phương Loan

- Nắm được quy tắc làm việc tại công ty

- Làm quen với các bạn intern khác

- Xây dựng các chức năng:

nhắn tin, đổi màu tin nhắn

Anh Khang Lâm Anh Huỳnh Tiến

- Sử dụng lệnh GIT cơ bản

- Làm quen với Ubuntu

Trang 12

- Tham gia xây dựng chức năng Tuần 3

- Debug code

Anh Khang Lâm Anh Huỳnh Tiến

- Sử dụng được CMake

- Viết unit test với gtest framework Tuần 4

(24/08/2020

-28/08/2020)

- Sử dụng Cmake, Gtest chạy auto testing

- Set up CI cho Gitlap

Anh Khang Lâm Anh Huỳnh Tiến

- Setup máy chạy test CI trên Gitlab (runner) local

- Tạo script chạy test CI tự động

- Tìm hiểu và sử dụng Docker Tuần 6

- Triển khai image thành container Tuần 7

(14/09/2020

-18/09/2020)

- Tìm hiểu Kubernetes và Microk8s

- Deploy chat app server trên microk8s local

Deploy thành công các pod, service trên Microk8s

Trang 13

Người phụ trách: Lâm Khang Nguyễn Tiến Đạt

- Deploy thủ công 3 pod trên server cty

- Gặp vấn đề về quyền user của CICD

- Ẩn/hiển thị log khi cần thiết

Trang 14

Chương 4 CHI TIẾT VỀ PROJECT

Với đề tài “Xây dựng ứng dụng chat có tính khả dụng cao (Availability Chat Application)” Thực tập sinh phải xây dựng được một ứng dụng chat cơ bản với các chức năng như: Đăng nhập, Chat peer to peer, Chat nhóm, quản lý chat nhóm, Ngoài

ra còn phải sử dụng các công nghệ mới như Docker và Kubernetes để đảm bảo tính khả dụng của ứng dụng

Bảng 4-1: Danh sách các Actor có trong chương trình

1 Admin Người quản lý danh sách các tài khoản, quản lý danh sách

các group chat hiện có

2 User Người dùng sử dụng các chức năng cơ bản của chat app

Bảng 4-2: Danh sách các Use Case có trong chương trình

1 Đăng nhập Người dùng buộc phải đăng nhập để sử dụng các chức

4 Chat peer to

peer

Người dùng cơ bản được sử dụng chức năng chat trực tiếp với một người dùng khác đang online

Trang 15

Người phụ trách: Lâm Khang Nguyễn Tiến Đạt

4.1 Kiến trúc phần mềm

Hệ thống được chia thành các thành phần như sau:

- Client: là ứng dụng được viết bằng ngôn ngữ C/C++ chạy trên hệ điều hành Ubuntu Dành cho người dùng là Admin và User thông thường, có hai phiên bản là Console dùng bởi Admin và GUI dùng QT để lập trình dùng bởi User

- Chat Server: là server chuyên dùng cho nhiệm vụ gửi nhận và lưu trữ tin nhắn giữa các người dùng với nhau Chat server sử dụng Socket để duy trình kết nối với Client

- REST Server: là server được xây dựng để thực hiện các chức năng thông dụng của người dùng: đăng nhập, quản lý tài khoản, quản lý nhóm chat Sử dụng thư viện cpprestsdk để viết HTTP request API

- MySQL: là hệ quản trị cơ sở dữ liệu để lưu trữ thông tin tài khoản người dùng, nhóm chat, tin nhắn chat,

Trang 16

4.2 Giao diện Client App

Hình 4-1: Màn hình đăng nhập

Trang 17

Người phụ trách: Lâm Khang Nguyễn Tiến Đạt

Hình 4-2: Màn hình nhắn tin trực tiếp trực tiếp với User

Trang 18

Hình 4-3:Màn hình nhắn tin theo nhóm

Trang 19

Người phụ trách: Lâm Khang Nguyễn Tiến Đạt

Hình 4-4: Màn hình quản lý nhóm

4.3 Triển khai hệ thống với Docker và Kubernetes

Docker là một ứng dụng dựa trên công nghệ containerization, là một trong nhũng công nghệ hiện đại để triển khai phần mềm Docker sẽ gôm tất cả thành phần cần thiết của ứng dụng thành một: môi trường, thư viện phụ thuộc, mã nguồn đã được build và thi thoảng có thể mang cả dữ liệu vào trong Và chúng ta có thể chạy ứng dụng trên bất cứ đâu có cài Docker Với Docker, chúng ta có thể đóng gói và phân phối phần mềm đến với khách hàng và các end-user nhanh chóng hơn

Trang 20

Với mô tả về kiến trúc hệ thống đã được đề cập trước đó, nhóm đã tạo ra 3 image docker tương ứng là mysql, chat server và rest server

Phần quan trọng nhất của ứng dụng là tính high availability của nó Để có thể đảm bảo hệ thống luôn luôn hoạt động thì Kubernetes có một số tính năng sau:

- Làm nhiệm vụ khởi động các image của docker lên một cách tự động

- Trong trường hợp một trong những container bị lỗi có khả năng khởi động lại

Trang 21

Người phụ trách: Lâm Khang Nguyễn Tiến Đạt

Mỗi Deployment trong K8S sẽ làm nhiệm vụ đảm bảo các pod của nó luôn luôn hoạt động, nếu có pod nào bị lỗi K8S sẽ khởi động lại pod đó với một số điều khiện khởi động nhất định

Service của K8S giống như là một cách thức để mọi thứ có thể kết nối với nhau: giữa các deployment và có thể kết nối với mạng bên ngoài Chẳng hạn, Chat và Rest server sẽ kết nối với MySQL cũng như cho phép các Client từ bên ngoài kết nối với chúng nó

Persitent Volume là một giải pháp dành cho vấn đề đảm bảo tính toàn vẹn của dữ liệu Bản thân mỗi container có một vùng nhớ riêng, và nó sẽ bị mất trong trường hợp xóa pod và khởi động lại, vì thế cần phải lưu trữ dữ liệu ở chỗ nào đó mà không bị mất khi pod bị xóa đi

Trang 22

TÀI LIỆU THAM KHẢO

Cho quá trình phát triển:

Trang 23

Người phụ trách: Lâm Khang Nguyễn Tiến Đạt

TỔNG KẾT

Lần đầu tiên tham gia thực tập cũng như làm việc ở một môi trường thực tế, mặc

dù đã có sự chuẩn bị từ trước nhưng không thể tránh được sự bỡ ngỡ về tác phong cũng như quy trình làm việc ở môi trường công ty

Sếp cùng các anh chị đồng nghiệp rất thân thiện và nhiệt tình, môi trường làm việc không quá áp lực giúp em có thể hoàn thành tốt các công việc được giao Những kiến thức được học ở trường chỉ là những kiến thức nền tảng để từ đó đào sâu nghiên cứu

và thực hiện nhiều dự án thực tế để đáp ứng được yêu cầu về kiến thức và kỹ năng ở môi trường làm việc chuyên nghiệp Ở công ty, với quy trình làm việc rõ ràng cùng với sự giám sát và quản lý của người có chuyên môn tốt, các dự án đa phần đều hoàn thành đúng thời gian đề ra

Ngoài những kiến thức về kỹ thuật hay lập trình, để một sinh viên có thể thích ứng nhanh với môi trường công ty thì yêu cầu kỹ năng mềm của sinh viên phải đạt một mức độ nhất định Có một số lượng không hề nhỏ sinh viên có kiến thức rất tốt nhưng

kỹ năng mềm quá yếu nên không được nhận vào các công ty hoặc được chi trả mức lương thấp hơn năng lực.Tự nghiên cứu, giải quyết vấn đề, nêu ra/trình bày vấn đề,

kỹ năng giao tiếp với đồng nghiệp, kỹ năng về Tiếng Anh,… là những kỹ năng cơ bản sinh viên cần phải trau dồi ngay khi còn là sinh viên để có thể đáp ứng được yêu cầu của các nhà tuyển dụng

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

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w