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
XÂY DỰNG DỰ ÁN WEB APP
Công ty thực tập : GEEK UP TECHNOLOGY JSC
Người phụ trách : Nguyễn Minh Trung
Thực tập sinh
: Đồn Cơng Minh
Mã số sinh viên : 18521092
TP. Hồ Chí Minh, tháng 12 năm 2021
Page |2
LỜI MỞ ĐẦU
Ngày nay, ngành công nghiệp phát triển ứng dụng điện thoại và wb là một bộ phận
không thể thiếu của ngành công nghiệp phần mềm. Với tốc độ phát triển vô cùng mạnh
mẽ, ngành phát triển ứng dụng điện thoại đã và đang là nhân tố kích thích sự phát triển
của cơng nghệ thơng tin thế giới, cả về phần cứng và phần mềm.
Cùng với xu thế phát triển của thế giới, Việt Nam cũng không phải ngoại lệ.
Ngành công nghiệp phát triển ứng dụng điện thoại non trẻ Việt Nam đã và đang phát
triển mạnh mẽ, để hịa nhập với những cơng ty hàng đầu về xây dựng ứng dụng điện
thoại trên thế giới. Bên cạnh sự phát triển của ứng dụng di động thì những ngành nghề
được tiếp cận người dùng một cách nhanh chóng như những gì ta có thể thấy là mạng xã
hội hay những app bán hàng trực tuyến cũng đang rất thịnh hành trên cả thế giới lẫn Việt
Nam.
Sau ba năm học tập trên trường, do mong muốn có thêm kinh nghiệm thực tế, cũng
như muốn được tìm hiểu, bổ sung kiến thức trong một mơi trường chun nghiệp, em có
dự định là sẽ thực tập trong học kì. Vì vậy, em quyết định chọn GEEK UP
TECHNOLOGY JSC là nơi sẽ giúp em thực hiện được dự định này.
LƯU Ý: Dự án được sử dụng và bản quyền pháp lý bởi công ty cổ phần công nghệ
GEEK Up. Để đảm bảo tính bảo mật và quyền lợi cho phía cơng ty thì tài liệu này
chỉ viết về các quy trình, cơng nghệ mà cá nhân được trải nghiệm trong quá trình
thực tập. Tài liệu sẽ không chia sẻ kỹ về sản phẩm nên rất mong được thơng cảm
Thực tập sinh: Đồn Công Minh
Page |3
LỜI CẢM ƠN
Trân trọng gửi lời cảm ơn Công ty cổ phần công nghệ GEEK Up đã 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 nhiệt tình của nhóm trainer,
nhóm thực tập chúng em đã tiếp thu được những kiến thức quan trọng để có thể làm
được một dự thực tế. Chân thành cảm ơn các anh chị trong nhóm trainer đã bỏ ra nhiều
thời gian, cơng sức để hướng dẫn chúng em hồn thành đợt thực tập này.
Đặc biệt cảm ơn anh Trung đã giúp hỗ trợ team xử lý các vấn đề trong workflow.
Cảm ơn anh Hiếu đã tận tình giúp đỡ nhóm backend có thể hồn thành dự án. Cảm ơn
anh Nghĩa đã hỗ trợ và chấn chỉnh dự án đi đúng hướng. Cảm ơn chị Uyên PD đã giúp
đỡ tụi em trong việc xây dựng giao diện hiệu quả đối với người dùng. Cảm ơn anh Thịnh
đã hỗ trợ tụi em rất nhiều trong cách làm việc, xử lý các vấn đề trong công việc. Cảm ơn
chị Uyên đã giúp đỡ team hiểu nhiều hơn về GU cũng như cách làm việc hiệu quả. Cảm
ơn tất cả mọi người trong GU đã giúp team phát triển rất nhiều kĩ năng trong q trình
làm việc để có thể làm ra một sản phẩm trong thời gian qua.
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.
Đoàn Cơng Minh
TpHCM, 20/12/2021
Thực tập sinh: Đồn Cơng Minh
Page |4
NHẬN XÉT CỦA KHOA
...................................................................................................................................................
...................................................................................................................................................
...................................................................................................................................................
...................................................................................................................................................
...................................................................................................................................................
...................................................................................................................................................
...................................................................................................................................................
...................................................................................................................................................
...................................................................................................................................................
...................................................................................................................................................
...................................................................................................................................................
...................................................................................................................................................
...................................................................................................................................................
...................................................................................................................................................
...................................................................................................................................................
...................................................................................................................................................
...................................................................................................................................................
...................................................................................................................................................
Thực tập sinh: Đồn Cơng Minh
Page |5
MỤC LỤC
Lời mở đầu .....................................................................................................................2
Lời cảm ơn ......................................................................................................................3
Nhận xét của khoa ..........................................................................................................4
Mục lục ...........................................................................................................................5
Chương 1: Giới thiêu công ty thực tập .........................................................................6
1. Giới thiệu công ty cổ phần công nghệ GEEK Up ................................................6
2. Sản phẩm của công ty ...........................................................................................7
3. Tổ chức cơng ty .....................................................................................................8
4. Hình ảnh các hoạt động tại công ty .................................................................... 10
Chương 2: Nội dung thực tập ...................................................................................... 11
1. Tìm hiểu cơng ty và các kỹ năng cơ bản trong cơng ty ..................................... 11
2. Tìm hiểu dự án .................................................................................................... 12
3. Thực hiện project ................................................................................................ 13
4. Lịch làm việc ..................................................................................................... 144
Chương 3: Chi tiết về project ...................................................................................... 15
1. Giới thiệu dự án .................................................................................................. 15
2. Giới thiệu team phát triển .................................................................................. 15
3. Giới thiệu về công nghệ sử dụng ........................................................................ 16
3.1 Công nghệ được sử dụng trong dự án ............................................................. 16
3.2 Cơng nghệ được cá nhân tìm hiểu và sử dụng trong dự án ........................... 16
4. Phạm vi dự án ..................................................................................................... 21
5. Kết quả đạt được của project ............................................................................. 21
Chương 4: Kết quả đạt được trong quá trình thực tập tại GEEK Up ...................... 21
Chương 5: Các hình ảnh thực tập tại công ty ............................................................. 22
Bảng thuật ngữ ............................................................................................................. 27
Thực tập sinh: Đồn Cơng Minh
Page |6
Chương 1: Giới thiêu công ty thực tập
1. Giới thiệu công ty cổ phần công nghệ GEEK Up
- Tên công ty: Công ty cổ phần công nghệ Geek Up (GEEK UP TECHNOLOGY
JSC)
- Địa chỉ:
o Trụ sở chính: 244/31 Huỳnh Văn Bánh, Phường 11, Quận Phú Nhuận,
Thành phố Hồ Chí Minh
o Chi nhánh: 27B/9 Nguyễn Đình Chiểu, Phường Đa Kao, Quận 1, Thành
phố Hồ Chí Minh
- Trang web: www.geekup.vn
- Email:
- Điện thoại: +84 28 6262 4400
- Slogan: “Insightful development”
- Sứ mệnh: Xây dựng các sản phẩm phần mềm mang lại nhiều giá trị cho người
dùng
Thực tập sinh: Đồn Cơng Minh
Page |7
2. Sản phẩm của công ty
GEEK Up phát triển ứng dụng trên nhiều nền tảng khác nhau. Là đối tác của
nhiều tập đoàn lớn trong và ngoài nước như: Viettel, Mobifone, FPT, TPBank,
… Rất nhiều sản phẩm được sử dụng rộng rãi như: ứng dụng ngân hàng TP
Bank, Ứng dụng waitrr tại Singapore và rất nhiều sản phẩm khác. Tất cả
những sản phẩm được xây dụng bởi GEEK Up đều ở mức “highest standards”
cho mỗi dự án phát triển phần mềm.
Dự án ứng dụng ebank của ngân hàng TPBank
Thực tập sinh: Đồn Cơng Minh
Page |8
Dự án waitrr của đối tác Singapore
3. Tổ chức cơng ty
GEEK Up tổ chức cơng ty theo mơ hình flat organization. Ở đây sẽ khơng có
phân cấp bậc trong quá trình làm việc mà mỗi người đều phải thể hiện tính chất
quan trọng trong team phát triển. Điều này khiến GU khác biệt hơn so với các
công ty trên thị trường.
• Squad: là các thành viên trong một dự án phát triển phần mềm ở đó bao
gồm đầy đủ các chapter để có thể xây dựng nên một dự án phần mềm
• Chapter: các thành viên trong cùng một nhóm có chung chun mơn.
Cùng nhau hỗ trợ để phát triển
• Guild: tập hợp tạo ra các nhóm mà ở đó những người có chung sở thích
ngồi cơng việc
Thực tập sinh: Đồn Cơng Minh
Page |9
Thực tập sinh: Đồn Cơng Minh
P a g e | 10
4. Hình ảnh các hoạt động tại cơng ty
Tổ chức giáng sinh
Thực tập sinh: Đồn Công Minh
P a g e | 11
Các buổi workshop
Chương 2: Nội dung thực tập
Đợt thực tập với chủ đề “Xây dựng ứng dụng web app” nhằm mục đích giúp thực
tập sinh được đào tạo toàn diện về xây dựng một sản phầm product thực tế, đồng thời rèn
luyện những kỹ năng mềm như làm việc nhóm, thuyết trình, giao tiếp. Tại cơng ty, thực
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 phát triển
product chun nghiệp.
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 tuần
Nội dung : Giới thiệu về công ty, cách làm việc của công ty
Được các anh chị là các senior trong từng mảng giới thiệu về cơng ty. Quy
trình phát triển phần mềm tại công ty. Học cách để áp dụng mơ hình làm việc
scrum vào thực tế.
Training về văn hố của công ty
Training về công nghệ được sử dụng trong backend, frontend của dự án.
Training về các vấn đề khi gặp sự cố trong quá trình làm việc
Thực tập sinh: Đồn Cơng Minh
P a g e | 12
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 sử dụng email trong
công việc…
Kết quả : Hiểu thêm về GEEK Up, quá trình thành lập và phát triển. Có thêm các
kỹ năng về quy trình làm việc, công nghệ , sử dụng email trong công việc, làm
việc có kế hoạch, có kỷ luật, có trách nhiệm hơn.
2. Tìm hiểu dự án
Thời gian : 2 ngày
Nội dung :
- Các bước khởi động cho dự án mới. PA giới thiệu về dự án:
• Mục tiêu, phạm vi của dự án
• Các anh chị sẽ hỗ trợ các mảng trong dự án
- Team thực hiện dự án.
- Lên kế hoạch cho dự án:
• Xây dựng các milestone
• Xây dựng iteration
• Xây dựng sprint
• Xây dựng tài liệu quy chuẩn cho dự án
Kết quả : Nắm và hiểu rõ dự án để tránh đi sai hướng. Thống nhất quy chuẩn
làm việc trong dự án
Thực tập sinh: Đồn Cơng Minh
P a g e | 13
3. Thực hiện project
Sau khi xây dựng kế hoạch cho dự án. Team dựa trên kế hoạch trên phát triển dự
án. Do team sử dụng scrum trong quá trình phát triển phần mềm nên sẽ có những
hoạt động sau:
• Hoạt động DailyScrum 15p vào đầu giờ làm việc mỗi ngày: mục tiêu để
team nắm rõ được tiến độ dự án. Đánh giá lại những việc đã làm. Kế hoạch
làm việc cho hơm nay
• Hoạt động review, retro sau mỗi iteration: team đánh giá lại công việc sau
mỗi iteration. Đánh giá tiến độ dựa trên tổng thể dự án. Tự đánh giá lại cách
làm việc của team. Xây dựng kế hoạch để củng cố lại team để làm việc hiệu
quả hơn. Xây dựng kế hoạch cho iteration kế tiếp
• Mỗi milestone sẽ bao gồm 2 iteration: Đây là buổi để demo với khách hàng
để đánh giá lại các yêu cầu của khách hàng. Dựa vào đó để alige tốt hơn với
khách hàng và đúng tiến độ dự án hơn.
• Sau khi hồn thành project thì sẽ có một buổi để đánh giá mức độ hồn thiện
của dự án và demo dự án trước công ty.
Thực tập sinh: Đồn Cơng Minh
P a g e | 14
4. Lịch làm việc
Thời gian làm việc từ 8h đến 11 giờ trưa và từ 13h30 tới 5h chiều. Từ thứ 2 đến thứ 7
Tuần
1
2
3
4
5
6
7
8
9
10
11
Công việc
- Tìm hiểu về cơng ty, cách tổ
chức của cơng ty.
- Làm quen với các công cụ
làm việc trong công ty.
- Học cách trao đổi, làm việc
qua email.
- Khởi động dự án.
- Lên kế hoạch
Người hướng dẫn
Mức độ
hoàn
thành
Anh Nguyễn Minh
Trung
10/10
Anh Nguyễn Minh
Trung
10/10
Anh Nguyễn Minh
Trung
8/10
- Đánh giá dự án.
- Chuẩn bị báo cáo trước
công ty về dự án.
Anh Nguyễn Minh
Trung
8/10
- UAT Testing
Anh Nguyễn Minh
Trung
9/10
- Tiến hành xây dựng dự án
Thực tập sinh: Đồn Cơng Minh
P a g e | 15
Chương 3: Chi tiết về project
1. Giới thiệu dự án
Trong GEEK Up xây dựng một hệ thống để nhằm hỗ trợ cho quá trình hoạt động
và phát triển của công ty. Được gọi là GUA (GEEK Up architecture). Dự án của
team là một product nằm trong hệ sinh thái GUA (Vì lý do bảo mật thông tin cho
GEEK Up nên chỉ chia sẻ về phạm vi sử dụng của project).
2. Giới thiệu team phát triển
Team phát triển bao gồm 12 người với các nhiệm vụ:
- Anh Nhân (CEO GEEK Up): Business Ower dự án
- Anh Nghĩa (PA tại GU): PA dự án
- Chị Uyên (PD tại GU): PD dự án
- Anh Trung (Product Frontend): hỗ trợ PF dự án
- Anh Hiếu (Product Backend): hỗ trợ PB dự án
- Đồn Cơng Minh: PB dự án
- Trần Minh Khôi (SE tại UIT): PB dự án
- Vincent Vũ (Năm nhất du học sinh Mỹ): PB Dự án
- Trần Huy (Năm hai du học sinh Mỹ): PF dự án
- Nguyễn Quốc Huy (Sinh viên năm 3 tại UIT): PF dự án
- Phạm Văn Thi Thông (Sinh viên năm 4 đại học giao thông vận tải): PF dự
án
-
Phan Nhật Duy (Sinh viên năm 5 tại đại học FPT): PF dự án
Thực tập sinh: Đồn Cơng Minh
P a g e | 16
3. Giới thiệu về công nghệ sử dụng
3.1 Công nghệ được sử dụng trong dự án bao gồm:
- Backend: Sử dụng Nestjs, Postgres DB, docker, docker-compose, gitlab
cicd, TypeORM
- Frontend: Sử dụng ReactJs, quản lý state bằng dva js, sử dụng umiJs,
ant.design
- Server: sử dụng AWS ec2, Aws S3
- Quản lý source code: Gitlab
- Quản lý tiến độ dự án: “Name”(Ứng dụng quản lý dự án trong hệ sinh thái
GUA)
Dự án được xây dựng dựa trên mơ hình hexagon architecture để đảm bảo align tốt
nhất với chương trình
Một số điểm được xây dựng trên dự án:
- Deploy thành công lên server
- Sử dụng gitlabcicd deploy testing liên tục
- Sử dụng netlify để deloy ứng dụng frontend.
3.2 Cơng nghệ được cá nhân tìm hiểu và sử dụng trong dự án
Nhiệm vụ của bản thân trong team là backend: trong team thì được phân
cơng các nhiệm vụ về dev, testing và align với các chapter khác để hoàn thành dự
án.
Thực tập sinh: Đồn Cơng Minh
P a g e | 17
Các nhiệm vụ cụ thể trong team:
5. Deploy và đưa ứng dụng vào staging.
6. Xây dựng và sử dụng các bash cho việc tự động hố các tác vụ.
7. Sử dụng netlify để deloy phía frontend
8. Viết script để tự động hố q trình xây dựng sản phẩm lên staging. Giúp cho quá
trình CICD trên gitlab diễn ra thuận lợi
9. Hỗ trợ và nhận support từ các thành viên trong team.
10. Xây dựng thành công mail server để tương tác người dùng
Cụ thể hơn về các công nghệ được sử dụng trong backend
a. Next JS
NestJS là một NodeJS framework dùng để phát triển server-side applications
hiệu quả và có thể mở rộng. NestJS là sự kết hợp bởi OOP (Object Oriented
Programming), FP(Functional Programming), FRP(Functional Reactive
Programming). NestJS sử dụng TypeScript.
NestJS được chia thành 3 phần chính:
• Modules
• Controllers
• Services
Thực tập sinh: Đồn Cơng Minh
P a g e | 18
Trong quá trình làm việc, nhóm tìm hiểu và áp dụng được mơ hình hexagon
trong quá trình phát triển code:
Sơ đồ tương tác các thành phần theo mơ hình hexagon
Các ngun lý khi xây dựng theo kiến trúc hexagon
• Nguyên lý 1: Tách biệt User-Side, Business Logic và Server-Side
• Nguyên lý 2: Dependency vào Business Logic
• Ngun lý 3: Ranh giới được cơ lập với Interface
Thực tập sinh: Đồn Cơng Minh
P a g e | 19
b. Gitlab
Nhóm sử dụng gitlab là công cụ quản lý source code
Triển khai theo mô hình dưới đây
Thực tập sinh: Đồn Cơng Minh
P a g e | 20
Cụ thể rằng:
• Nhánh master sẽ là nhánh chính trong q trình xây dựng source code
• Nhánh hotfix sẽ là nhanh fix nhanh những lỗi còn tồn tại trong nhánh
master hoặc giải quyết các xung đột tại đây.
• Nhánh feature sẽ là các nhánh xây dựng chức năng của dự án.
• Nhánh dev sẽ là nhánh chạy xuyên suốt trong quá trình phát triển phần
mềm. Tại đây sẽ có sự đóng góp tính năng(merge) từ các nhanh feature
để hồn thành dự án.
• Nhánh release sẽ là nhánh sau khi kiểm thử các tính năng. Xảy ra 2
trường hợp. Nếu nhánh release hoàn thành các bài test và hoàn thành
phiên bản sẽ được đẩy lên nhánh master. Trường hợp chưa hoàn thiện sẽ
được đẩy về nhánh dev để hồn thiện lại sản phẩm.
Ngồi ra gitlab cịn hỗ trợ cho nhóm về hồn thành CICD giúp cho việc xây
dựng được triển khai liền mạch hơn.
Thực tập sinh: Đồn Cơng Minh
P a g e | 21
Cụ thể là: khi nhánh release được gọi lệnh push (merge từ dev) từ user sẽ tiến
hành vào các task chạy trong script CICD gitlab. Tại đây sẽ diễn ra quá trình
build và testing các chức năng. Nếu pass thì sẽ cho phép merge vào release và
được tự động deloy ứng dụng lên amazon ec2
4. Phạm vi dự án
Dự án của team là một product nằm trong hệ sinh thái GUA. Được sử dụng bới
team tuyển dụng của GEEK Up
5. Kết quả đạt được của project
Dự án được chấp thuận bởi CEO GEEK Up. Trong tuần cuối cùng. Nhóm đã kịp
thời đưa ra bản testing UAT cho các đối tượng sử dụng. Hiệu quả của dự án được
đánh giá tốt sau khi được chấp thuận
Chương 4: Kết quả đạt được trong quá trình thực tập tại GEEK Up
- Đạt top performers tại kì thực tập.
- Hoàn thành được một dự án thực tế.
- Học được cách xây dựng một product thực tế
- Cách sử dụng các cơng cụ trong q trình làm việc
- Áp dụng được scrum vào trong môi trường làm việc thực tế.
- Học được nhiều hơn về công nghệ và sử dụng đúng mục đích.
- Tại GEEK Up học được thêm nhiều về các kĩ năng mềm như thuyết trình, kĩ năng
làm việc.
- Tiếp thu được văn hoá tốt tại GEEK Up.
Thực tập sinh: Đồn Cơng Minh
P a g e | 22
Chương 5: Các hình ảnh thực tập tại cơng ty
Đạt top performers tại kì thực tập
Thực tập sinh: Đồn Cơng Minh
P a g e | 23
Team thực tập sinh
Thực tập sinh: Đồn Cơng Minh
P a g e | 24
Tham gia các buổi workshop tại GEEK Up
Thực tập sinh: Đồn Cơng Minh
P a g e | 25
Thời gian học hỏi kiến thức về quy trình làm việc tại GEEK Up
Thực tập sinh: Đồn Cơng Minh