Tải bản đầy đủ (.doc) (26 trang)

Back-End Developer (Báo Cáo Thực Tập).Doc

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 (458.26 KB, 26 trang )

<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">

<b>ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINHTRƯỜNG ĐẠI HỌC CƠNG NGHỆ THƠNG TIN</b>

<b>KHOA CƠNG NGHỆ PHẦN MỀM</b>

<b>BÁO CÁO THỰC TẬP</b>

<b>BACK-END DEVELOPERCông ty thực tập: Vitalify Asia</b>

<b>Người phụ trách: Võ Ngọc TrọngThực tập sinh : Nguyễn Đăng Khoa</b>

</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2">

<b>LỜI MỞ ĐẦU</b>

Trong thời đại Cách mạng Công nghiệp 4.0, lĩnh vực Công nghệ thông tin, đặc biệt là ngành phần mềm, đóng vai trị quan trọng trong sự phát triển toàn diện của xã hội. Với sự tiến bộ mạnh mẽ của công nghệ và q trình số hóa, Backend Developer - những người chịu trách nhiệm xây dựng và duy trì hệ thống server, cơ sở dữ liệu và logic xử lý dữ liệu - ngày càng trở nên không thể phủ nhận vai trò quan trọng của họ.

Với sự gia tăng đột phá của ứng dụng, đặc biệt là trên nền tảng website và di động, cùng với sự phổ cập của các thiết bị thông minh, nhu cầu của người dùng đối với các ứng dụng và phần mềm không ngừng tăng cao. Backend Developer đóng vai trị then chốt trong việc phát triển ứng dụng để đảm bảo tính ổn định, bảo mật và hiệu suất cho các hệ thống và dịch vụ trực tuyến.

Nhiệm vụ của Backend Developer không chỉ là sự thành thạo về ngơn ngữ lập trình và cơng nghệ, mà cịn bao gồm khả năng tối ưu hóa hiệu suất hệ thống, quản lý cơ sở dữ liệu và xửlý các yêu cầu từ phía Frontend. Việc xây dựng ứng dụng không chỉ đơn thuần là về chức năng mà còn đòi hỏi tuân thủ các tiêu chuẩn phát triển, để đáp ứng yêu cầu ứng dụng và hỗ trợ tương tác với nhiều nhóm phát triển khác, đồng thời đảm bảo khả năng bảo trì hệ thống.

Với mong muốn góp phần vào sự phát triển và chất lượng của các hệ thống và ứng dụng, tôi đã chọn hướng nghiệp Backend Developer. Tham gia vào môi trường làm việc chuyên nghiệp như Vitalify Asia, tôi hy vọng sẽ có cơ hội áp dụng kiến thức đã học và phát triển bản thân trong môi trường thực tế, góp phần vào sự thành cơng và phát triển của các dự án công nghệ.

</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">

<b>LỜI CẢM ƠN</b>

Trân trọng gửi lời cảm ơn Công ty Vitalify Asia vì đã tạo điều kiện cho em có cơ hộithực tập tại công ty. Trong khoảng thời gian ngắn đó, nhờ sự chỉ dẫn nhiệt tình của các nhómtrainer, em đã nắm được những kiến thức quan trọng, giúp em trực tiếp tham gia vào dự án vàlàm việc cùng với các thành viên khác. Tham gia vào dự án, em đã hiểu rõ hơn về quy trình pháttriển phần mềm, từ xây dựng cấu trúc dữ liệu, thiết kế cơ sở dữ liệu, xử lý logic nghiệp vụ chođến triển khai ứng dụng trên môi trường thực tế.

Em muốn bày tỏ lòng biết ơn đặc biệt đến anh Võ Ngọc Trọng và các thành viên trongdự án đã hướng dẫn và giúp đỡ tận tình, từ việc giải quyết khó khăn trong cơng việc đến việclàm quen với môi trường mới. Nhờ sự hướng dẫn tận tâm và giúp đỡ, em đã có thể hồn thànhnhiệm vụ được giao một cách hiệu quả và đạt được mục tiêu của dự á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ềukiện em làm bài báo cáo này. Em biết ơn những cơ hội quý giá mà Công ty Vitalify Asia vàkhoa Công nghệ phần mềm đã mang đến cho em. Nhờ những trải nghiệm này, em đã không chỉnắm bắt kiến thức chun mơn mà cịn phát triển kỹ năng làm việc nhóm, giao tiếp và giải quyếtvấn đề. Điều này sẽ góp phần quan trọng trong sự nghiệp và phát triển tương lai của em.

Một lần nữa, em xin gửi lời cảm ơn chân thành đến Công ty Vitalify Asia, các thành viêntrong dự án và toàn thể thầy cô trong khoa Công nghệ phần mềm. Em rất biết ơn sự tận tâm vàsự giúp đỡ của mọi người, và em sẽ luôn ghi nhớ những kinh nghiệm và bài học quý báu mà emđã học được từ thời gian thực tập này.

Nguyễn Đăng KhoaTpHCM, ngày 01 tháng 01 năm 2023

</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4">

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THƠNG TIN

<b>KHOA CƠNG NGHỆ PHẦN MỀM</b>

<b>CỘNG HỒ XÃ HỘI CHỦ NGHĨA VIỆT NAMĐộc lập – Tự do – Hạnh phúc</b>

<b>NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN</b>

Họ và tên sinh viên: Nguyễn Đăng KhoaMã số sinh viên: 20521470

<b>Đánh giá quá trình thực tập của sinh viên:</b>

</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">

<b>MỤC LỤC</b>

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

1.1 Thông tin công ty...8

1.2 Nền tảng công nghệ...9

1.2.1 Các công nghệ hiện tại mà Vitalify sử dụng chính:...9

1.3 Sản phẩm cơng ty...11

1.3.1 NikoNiKo (HRM System)...11

<b>Chương 2: Nội dung thực tập...15</b>

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

<b>Chương 3: Chi tiết về project...19</b>

3.1 Thông tin về dự án...19

3.1.1 Dự án Rakuten Investment Management...19

3.1.2 Cơ cấu thành viên dự án...20

3.1.3 Công nghệ sử dụng trong dự án...21

3.2 Các công việc đã thực hiện...22

3.2.1 Nghiên cứu tài liệu mô tả API hoặc màn hình và hiện tượng bất thường để điều tralỗi 223.2.2 Tái hiện lỗi...23

3.2.3 Trình bày nguyên nhân và đề xuất hướng giải quyết...24

3.2.4 Thực hiện Fix lỗi cho các API hoặc màn hình...26

3.2.5 Xác định các testcase sau khi đã fix lỗi và tạo dữ liệu giả để mô phỏng và tạo Evidence...26

3.2.6 Review Evidence và Code...26

3.2.7 Tạo Merge Request và Release...26

</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">

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

<i>Logo công ty</i>

<b>1.1 Thông tin công ty.</b>

 Tên công ty: Công ty TNHH Vitalify Á Châu. Năm thành lập: 2008

 Lĩnh vực kinh doanh: Phát triển các ứng dụng web, ứng dụng di động, phát triểngame (outsourcing/in-house).

 Địa chỉ: 224A Đ. Điện Biên Phủ, Phường 6, Quận 3, Thành phố Hồ Chí Minh. Website: a

 Vitalify Asia, thành lập từ năm 2008, là công ty phát triển offshore của Nhật Bảnchuyên sản xuất ứng dụng và phần mềm. Công ty nổi bật với khả năng phát triển cácdịch vụ hướng đến người dùng và thiết bị thông minh. Với 90% khách hàng là cáccông ty Nhật Bản, thành viên của Vitalify Asia có cơ hội tham gia vào các dự ánCông nghệ Thông tin và Truyền thông (CNTT) hàng đầu tại Nhật Bản.

 Hiện đang hoạt động tại Việt Nam, Vitalify Asia khơng ngừng nỗ lực để đóng gópvào việc nâng cao năng lực nhân sự trong lĩnh vực Công nghệ thông tin (IT). Với gần10 năm kinh nghiệm, công ty không chỉ làm mạnh mẽ nguồn nhân lực IT, mà còn hỗtrợ các doanh nghiệp Nhật Bản đầu tư vào Việt Nam. Đồng thời, Vitalify Asia cũnghỗ trợ trong lĩnh vực marketing và kinh doanh tại thị trường nội địa Việt Nam.

</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">

 Các hoạt động chính của Vitalify Asia bao gồm hỗ trợ tổng thể về phát triển offshore,phát triển Labo, và hỗ trợ đầu tư vào Việt Nam, cũng như tham gia vào các chiếnlược marketing và kinh doanh tại thị trường nội địa Việt Nam.

</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">

<i>c. Application (Mobile Apps)</i>

 TypeScript, hoặc JavaScript với React Native framework TypeScript, hoặc JavaScript với Capacitor framework Dart với Flutter framework

 C# với Unity 3D/2D engine

<i>d. Infrastructure / Database / Tools</i>

 Code Hosting: GitHub, Bitbucket, GitLab Unit / E2E Testing: Jest, Cypress, Detox

 CI Service: CircleCI, Travis CI, AWS Code Pipeline, Git Actions IaC (Infrastructure as code): Docker, Terraform

 Cloud Server: AWS (Amazon Web Service), Azure, GCP (Google CouldPlatform)

 Database: Amazon RDS, MongoDB, MySQL, MariaDB, DynamoDB,RealmDB

 Deployment: DeployGate

</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">

Các tính năng bao gồm đăng ký và đăng xuất dễ dàng từ ứng dụng, cơ sở dữ liệu tổchức mạnh mẽ và khả năng hiển thị sức khỏe tâm thần của nhân viên. Hiện chúng tôiđang bán sản phẩm này cho thị trường Việt Nam.

</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">

<i>Thống kê cảm xúc của nhân viên khi thực hiện đăng ký</i>

Hỗ trợ động lực của nhân viên bằng chức năng nhận dạng khuôn mặt

Bằng cách đọc được cảm xúc trên khuôn mặt nhân viên khi nhân viên đi làm  mỗi ngày,

bạn có thể hiểu được tâm trạng chung của đội bạn. Dựa vào đó, bạn có thể cải thiện môi trường làm việcvà hoạt động nội bộ.

</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14">

<i>NikoNiko hỗ trợ xuất file chấm công theo định dạng CSV</i>

NikoNiko hỗ trợ xuất dữ liệu thời gian chấm công của nhân viên ở định dạng CSV

<i>NikoNiko hỗ trợ checkin mọi lúc mọi nơi</i>

NikoNiko hỗ trợ việc truy cập và đăng ký trên nhiều thiết bị ở mọi lúc, mọi nơi.

</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="15">

<b>Chương 2: Nội dung thực tập2.1 Tìm hiểu cơng ty và các kỹ năng cơ bản trong công ty</b>

<b>Tuần 1:01/08/2023</b>

 Giới thiệu về cơng ty, phịng lab tham gia, xác nhận cơng nghệ làm việc,giới thiệu về người hướng dẫn.

 Đọc hiểu development guideline như:o Development Guideline Overviewo Definition & Rule

o Workflowo Gitflowo Daily reporto Using Chatwork

 Đăng ký và tạo các tài khoản dùng để giao tiếp với thành viên trong nhómnhư chatwork, email, github.

 Tiếp nhận yêu cầu và lên ý tưởng về việc xây dựng ứng dụng demo dựatrên các công nghệ công ty đang sử dụng (MySQL, NestJS, TypeOrm,GraphQL).

<b>Kết qu ả: Nắm bắt tổng quan về cơ cấu hoạt động của cơng ty, quy trình phát</b>

triển phần mềm, cách tham gia các cuộc họp nội bộ, cách tiếp nhận nhiệm vụvà báo cáo hàng ngày. Hoàn thành ứng dụng demo

<b>Tuần 2:08/08/2023</b>

</div><span class="text_page_counter">Trang 16</span><div class="page_container" data-page="16">

o Quy trình Assign và nhận Task thơng qua các Issue.o Quy tắc đặt tên branch, commit theo yêu cầu dự án. Được training quy trình làm việc, meeting và report:

o Thực hiện report vào cuối mỗi ngày làm việc nội dung bao gồm cáctask được giao, thời gian ước tính cho mỗi task, số thời gian đã thựchiện, số thời gian còn lại cho mỗi task, vấn đề gặp phải và kế hoạchcủa ngày làm việc tiếp theo.

o Cách để ước tính thời gian hồn thành cho các cơng việc được giao.o Quy trình tham gia các cuộc meeting.

 Tham gia và tìm hiểu về dự án mà team đang thực hiện, Tải source code,cài đặt các môi trường cần thiết để chạy ứng dụng.

 Đọc và nghiên cứu mã nguồn.

<b>Kết qu ả: Nắm bắt được quy trình của dự án và có thể tham gia vào dự án.</b>

<b>Tuần 3:16/08/2023</b>

 Tiếp tục nghiên cứu mã nguồn và được assign task đầu tiên. Nghiên cứu task được assign và thực hiện:

o Điều tra lỗi trong ứng dụng

o Phân tích nghiệp vụ và logic xử lý dựa trên các file tài liệu (tiếng Nhật)o Thực hiện tái hiện lỗi (chuẩn bị dữ liệu cần thiết để tái hiện)

o Nghiên cứu mã nguồn và tìm lỗio Đề xuất hướng giải quyết

o Thực hiện sửa lỗi trên mã nguồn

o Tạo file báo cáo chứng minh lỗi đã được sửa (Evidence)

o Commit code và chờ review mã nguồn sau đó tiến hành merge code vàrelease lên mơi trường develop.

<b>Kết qu ả: Hồn thành cơng việc được giao</b>

</div><span class="text_page_counter">Trang 17</span><div class="page_container" data-page="17">

<b>Tuần 4:24/08/2023</b>

 Tiếp tục nghiên cứu mã nguồn của ứng dụng (Ứng dụng có nhiều sourcekhác nhau, mỗi source có nghiệp vụ riêng biệt).

 Tiếp tục được Assign Task và thực hiện tương tự.

<b>Kết qu ả: Hồn thành cơng việc được giaoTuần 5:</b>

 Tiếp tục được Assign Task và thực hiện.

<b>Kết qu ả: Hồn thành cơng việc được giaoTuần 6:</b>

 Tiếp tục được Assign Task và thực hiện.

<b>Kết qu ả: Hồn thành cơng việc được giaoTuần 7:</b>

 Tiếp tục được Assign Task và thực hiện.

<b>Kết qu ả: Hoàn thành công việc được giaoTuần 8:</b>

 Tiếp tục được Assign Task và thực hiện.

<b>Kết qu ả: Hoàn thành công việc được giaoTuần 9:</b>

 Tiếp tục được Assign Task và thực hiện.

<b>Kết qu ả: Hồn thành cơng việc được giaoTuần 10:</b>  Tiếp tục được Assign Task và thực hiện.

</div><span class="text_page_counter">Trang 18</span><div class="page_container" data-page="18">

<b>Kết qu ả: </b> Hồn thành cơng việc được giao

<b>Tuần 11:18/10/2023</b>

 Tiếp tục được Assign Task và thực hiện.

<b>Kết qu ả: </b> Hồn thành cơng việc được giao

<b>Tuần 12:26/10/2023</b>

 Tiếp tục được Assign Task và thực hiện.

<b>Kết qu ả: </b> Hoàn thành công việc được giao

</div><span class="text_page_counter">Trang 19</span><div class="page_container" data-page="19">

<b>Chương 3: Chi tiết về project3.1 Thông tin về dự án</b>

<b>3.1.1 Dự án Rakuten Investment Management</b>

"Rakuten", là một công ty thương mại điện tử và Internet của Nhật Bản có trụ sở tạiTokyo, được thành lập vào năm 1997 bởi Mikitani Hiroshi. Cho đến hiện nay, Rakutensử hữu hàng chục loại doanh nghiệp và một lượng lớn các công ty con, trong đó phải kểđến như:

<small></small> Mua sắm trực tuyến

<small></small> Thẻ tín dụng và thanh tốn<small></small> Phương tiện truyền thơng<small></small> Đặt phịng du lịch

<small></small> Thể thao

<small></small> Phân tích dữ liệu và tiếp thị<small></small> Sách điện tử

<small></small> Phân phối sách<small></small> Thời trang

<small></small> Tin nhắn di động

Rakuten Investment Management Inc. (Rakuten IM) là một cơng ty quản lý quỹ đầu tưthuộc tập đồn Rakuten, một tập đoàn thương mại điện tử lớn của Nhật Bản. Rakuten IMhoạt động trong lĩnh vực quản lý quỹ đầu tư và có thể cung cấp các sản phẩm và dịch vụliên quan đến đầu tư tài chính. Rakuten IM là một phần của Rakuten Group, một tậpđoàn đa ngành với sự hiện diện toàn cầu. Tập đoàn này bao gồm nhiều công ty con và chinhánh, hoạt động trong nhiều lĩnh vực như thương mại điện tử, ngân hàng trực tuyến,

</div><span class="text_page_counter">Trang 20</span><div class="page_container" data-page="20">

Vitalify Asia là một dự án thuộc doanh nghiệp Rakuten Investment Management Inc vànó đã được hồn thành và đang trong q trình hoạt động, tới thời điểm hiện tại đối tácphía Rakuten đã chuyển đổi hệ thống và công nghệ sang một nền tảng mới với hệ thốngtương tự với phiên bản trước đó. Tuy nhiên trong q trình chuyển đổi, hệ thống mớiđang gặp một số các kết quả không mong muốn trên hệ thống, do đó mong muốn đượcđiều tra nguyên nhân và sửa đổi.

Các đối tác trong dự án bảo trì và phát triển Rakuten Investment Management baogồm các thành viên khách hàng tại Nhật Bản. Một nhóm các thành viên chính trong qtrình xây dựng dự án đang làm việc tại Trung Quốc và nhóm đối tác tại Việt Nam vàVitalify Asia.

<b>3.1.2 Cơ cấu thành viên dự án</b>

 Project Manager (PM): Người đảm nhận quản lý dự án cao nhất, làm việc trực tiếpvới khách hàng và BPM.

 Bridge Project Manager (BPM): Là cầu nối giữa khách hàng và lập trình viên, có vaitrị nhận các u từ khách hàng, phân tích và truyền đạt lại cho các lập trình viên. Làngười trực tiếp giao các cơng việc đã được phân tích, chia nhỏ cho lập trình viên,cũng như đảm nhận việc kiểm thử các sản phẩm của người dùng cuối. Khách hàngcủa Rakuten là người Nhật, do đó BPM thường sẽ đảm nhận việc giao tiếp với kháchhàng, nắm bắt yêu cầu của khách hàng và truyền đạt với lập trình viên, đồng thời đưara các phân tích số liệu và thời gian hồn thành các công việc.

 Leader: Người đảm nhận quản lý các thành viên trong nhóm dự án, là người trực tiếphỗ trợ các thành viên thực hiện các công việc, đồng thời đưa ra quyết định cho cáccuộc họp và các đề xuất, giải pháp từ các thành viên trong nhóm.

 Lập trình viên: Nhiệm vụ chính là phát triển phần mềm, nhận công việc từ BPM hoặcLeader và tiến hành thực hiện, tự kiểm tra, sau đó kiểm tra chéo với các lập trình viênkhác. Tham gia vào quá trình phân tích yêu cầu với BPM, cũng như tư vấn các vấn đềliên quan đến công nghệ.

</div><span class="text_page_counter">Trang 21</span><div class="page_container" data-page="21">

<b>3.1.3 Cơng nghệ sử dụng trong dự án</b>

 Phía server: sử dụng NodeJs với framework NestJs, Restful API và DatabasePostgreSQL.

 Website: sử dụng framework VueJs.

 Triển khai và các dịch vụ khác: AWS, Microsoft Azure.

</div><span class="text_page_counter">Trang 22</span><div class="page_container" data-page="22">

<b>3.2 Các công việc đã thực hiện</b>

<b>3.2.1 Nghiên cứu tài liệu mơ tả API hoặc màn hình và hiện tượng bất thường để điều tra lỗi</b>

o Yêu cầu viết trigger ở database để khi có data được cập nhật mới vào một bảng dữ liệuthô (vitals) thì database sẽ tự động trigger thay đổi data của các bảng khác(hoursStatictis) cho phù hợp mà khơng cần phía server tính tốn và cập nhật.

 Hướng giải quyết:

o Tạo thêm vào cơ sở dữ liệu 2 bảng đó là vitals chứa dữ liệu mà server IoT gửi đến để cậpnhật và bảng hoursStatictis chứa dữ liệu được phân tích từ vitals.

o Viết trigger trên bảng vitals, cụ thể sẽ trigger 3 sự kiện là sau khi thêm dữ liệu vào vitals,sau khi cập nhật dữ liệu đã có sẵn của vitals và cuối cùng sau khi xoá dữ liệu trong vitals.

</div><span class="text_page_counter">Trang 23</span><div class="page_container" data-page="23">

 Triển khai:

o Trigger sau khi insert data

<b>3.2.3 Trình bày nguyên nhân và đề xuất hướng giải quyết</b>

 Yêu cầu từ phía BPM:

o Phát triển các API liên quan đến việc nhật ký khám bệnh của vật nuôi

o Cập nhật API nhật ký hoạt động của vật nuôi (hoạt động hằng ngày, thức ăn, đi dạo, ….)o Cập nhật API getHomeData, vì thơng tin ở màn hình trang chủ có nhiều thông tin khác

nhau từ nhiều bảng của cơ sở dữ liệu nên các dữ liệu được mặc định là số cần phải ánhxạ thành thông tin được định nghĩa sẵn để phía lập trình di động khơng cần phải tốn thờigian và tốc độ tải trên màn hình này được nhanh hơn.

o Cập nhật lại logic xử lý gửi thơng báo cho người dùng, có thể gửi theo nhiều điều kiệnkhác nhau, theo nhiều người dùng có cùng điều kiện,..

o Và các API lấy danh sách, thông tin chi tiết, cũng như xoá một đối tượng cụ thể, . . .

 Hướng giải quyết:

o Xác nhận lại rõ các yêu cầu mà BPM muốn thay đổi, góp ý đưa ra giải pháp phù hợp.o Dựa vào độ phức tạp cũng như sự đổi đổi nhiều hay ít của u cầu mà estimate thời gian

hồn thành cơng việc.

</div>

×