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 (2.59 MB, 32 trang )
<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">
TP. Hồ Chí Minh, tháng 8 năm 2023
</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2">Trong cuộc cách mạng cơng nghiệp 4.0, cơng nghệ thơng tin nói chung và ngành Cơng nghệ phần mềm nói riêng ln là nhân tố đóng vai trị quan trọng trong q trình phát triển của xã hội.
Cơng nghệ Web, hay công nghệ sản xuất các trang web đã phục vụ hầu hết các nhu cầu của con người từ bán hàng, cung cấp kiến thức đến thông tin liên lạc, ... Hiện nay đã có đến hơn 1.5 tỷ trang web, nhưng nhu cầu tạo ra những trang web mới vẫn chưa có dấu hiệu giảm.
Do đó, một trang web muốn được nhiều người sử dụng phải đáp ứng được yếu tố hình thức và nội dung. Làm thế nào để sản phẩm tạo ra đạt chất lượng cao ở hai yếu tố trên ln làm bất kì một đội ngũ phát triển website nào cũng cần phải suy nghĩ đau đầu. Để thử thách bản thân trong ngành công nghiệp web, em đã lựa chọn Full stack web developer là định hướng cho việc học cũng như nghề nghiệp trong tương lai.
Sau những năm tháng trong môi trường đại học, với mong muốn áp dụng những kiến thức đã học và có được trải nghiệm trong môi trường thực tế, em đã quyết định tham gia vào FPT Software– một môi trường lý tưởng và chuyên nghiệp để thực hiện dự định.
</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">Em xin trân trọng gửi lời cảm ơn chị Hồ Thị Mỹ Uyên đã tạo điều kiện cho em cơ hội được thực tập tại công ty. Dù trong thời gian ngắn nhưng nhờ sự chỉ dẫn nhiệt tình của chị, em đã tiếp thu những kiến thức quan trọng để có thể tham gia một dự án thực tế. Chân thành cảm ơn Team 3 của Java8 và các anh chị trong team đã giúp đỡ em tận tình, cho em những trải nghiệm đáng quý trong kỳ thực tập vừa qua. Qua đó giúp em làm quen mơi trường mới cũng như trong việc tiếp cận kiến thức công nghệ, kỹ năng lập trình và tư duy sản phẩm để có thể thực hiện tốt dự án cá nhân và dự án thực tế trong thời gian qua.
Em 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áo cáo này.
TP. HCM, ngày 15 tháng 9 năm 2023
Hồ Minh Tuệ
</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5">1.3. Lịch làm việc khi thực tập tại công ty ... 7
CHƯƠNG 2: NỘI DUNG THỰC TẬP ... 8
2.1. Các quy tắc trong công ty ... 8
2.2. Quá trình tham gia dự án ... 11
2.2.1. Phân tích yêu cầu ... 11
</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6"><i>Hình 1.1. Logo FPT Software </i>
FPT Software, thuộc về Tập đồn FPT, là cơng ty cung cấp dịch vụ và giải pháp phần mềm cho khách hàng quốc tế, với hơn 27000 nhân viên và phục vụ hơn 1000 khách hàng cả trong và ngồi nước. Cơng ty được thành lập năm 1999, sau hơn 20 năm phát triển đã vươn tầm và có 71 văn phịng ở 28 quốc gia trên thế giới. Các lĩnh vực hỗ trợ của FPT Software bao gồm: Y tế, Ngân hàng tài chính, Cơ khí và tự động hóa, Phương tiện truyền thông,…
Công ty chuyên về mảng outsourcing cho các công ty trong và ngoài nước, gồm nhiều mảng như Blockchain, AI, Big Data,... Ngồi ra cũng có những sản phẩm tự phát triển như:
Hình 1.2 Logo Utop
Đây là ứng dụng thanh toán nhanh trên thiết bị di động. Thiết bị cho phép tích điểm người dùng và đổi điểm ở các chi nhánh sử dụng. Ứng dụng có tích hợp với các bên thứ
</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">3 như Momo hay tích hợp với ngân hàng cho thuận tiện việc thanh tốn. Utop dược xây dựng với cơng nghệ Blockchain để đảm bảo an tồn thơng tin người sử dụng.
Hình 1.3 Logo CodeLearn
Trang web đào tạo lập trình trực tuyến CodeLearn, hướng dẩn ứng dụng các cơng nghệ hiện đại như trình biên dịch, AI, docker, AWS… giúp người học rèn luyện kỹ năng lập trình đa cấp. Ngồi ra cịn có hỗ trợ cộng đồng học thuật để tăng tính tương tác, thực tế của các khóa đào tạo.
Em bắt đầu làm việc từ ngày 22/6 đến 21/8, làm việc trực tiếp trên công ty thứ 3 và thứ 5, làm việc online tại nhà vào thứ 2, 4, 6. Công việc bắt đầu từ 8h sáng đến 17h chiều, được nghỉ trưa từ 11h30 đến 1h. 3 tuần đầu kỳ thực tập dành ra để làm quen với cách làm việc, tiếp nhận, phân tích dự án. Cơng ty có tổ chức các cuộc thi Code War, đại hội nhạc vào các buổi chiều cho thực tập sinh tham gia. Mỗi tuần sẽ có review lại những việc đã làm và cập nhật lại trên lịch của nhóm. Và có các buổi giảng của mentor để nhóm làm quen với văn hóa làm việc trong công ty.
</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">- Nghiêm cấm sử dụng github trong mọi trường hợp. - Nghỉ phép phải báo trước 3 ngày.
- Tham gia đầy đủ các buổi training, kiểm tra. Thời gian: 2 tháng
Em được giới thiệu bản than và phân chia nhóm để làm việc cùng, 1 nhóm có 10 người và có trường nhóm. Các nhóm sẽ làm việc chính với các mentor, các mentor đánh giá về mức độ của dự án, các điểm cần lưu ý và cải thiện. Ngồi ra cịn tổ chức các buổi kiểm tra về kiến thức, trình độ kỹ thuật, được tham khảo ý kiến từ những người có kinh nghiệm trong ngành.
<i>Nhóm em được phân cơng phụ trách Backend của Website Quản lý tuyển dụng. Dự án </i>
được viết bằng Java Spring Boot, Frontend là React JS do nhóm khác đảm nhiệm. 2 nhóm làm việc độc lập, nhưng có sự hợp tác, làm việc chung thơng qua trưởng nhóm. Mỗi khi có thay đổi sẽ có buổi góp ý của 2 nhóm với nhau. Các nhóm được tham gia vào quy trình phát triển sản phẩm từ khâu phân tích yêu cầu đến deploy dự án và làm theo mơ hình Scrum.
</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">Đối với mỗi thành viên, chúng em phân công công việc dựa vào kiến thức, khả năng mỗi người. Trong nhóm sẽ có người chuyên về phân tích yêu cầu, thiết kế hệ thống, cơ sở dữ liệu, phát triển, kiểm thử, devops,... Mỗi công đoạn đều có sự đóng góp của tất cả thành viên, nhưng sẽ có người phụ trách chính. Cơng việc các thành viên được phân chia và tiến độ được cập nhật thường xuyên trên ClickUp. Đây là phần mềm dùng để quản lý dự án được nhiều người ưa dùng. Ngoài ra còn sử dụng GitLab để quản lý source code.
</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">Cuối kỳ thực tập, dự án sẽ phải deploy lên hosting thật để chấm điểm và đánh giá. Sau đó người chấm sẽ đặt các câu hỏi liên quan đến dự án để kiểm tra kiến thức, đóng góp
</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">của mỗi người từ đó đánh giá kỳ thực tập của sinh viên. Dự án deploy trên 2.4 Trang chủ SAP 2.2. Quá trình tham gia dự án
Tuần 1 và tuần 2 nhận yêu cầu từ mentor, được hướng dẫn cách phân tích tính năng và yêu cầu của người dùng. Được mentor hướng dẫn cách làm việc nhóm, quản lý thời gian và phân chia cơng việc cho hiệu quả. Nhóm chọn sử dụng các công cụ như ClickUp để quản lý tiến độ và thường xuyên liên lạc thông qua Discord, Messager.
Hình 2.5 Giao diện chính và phân chia cơng việc
</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12">Về người dùng thì có thể phân chia ra 4 loại:
- Admin: Quản lý quyền người dùng. Có thể gắn blacklist Candidate hoặc xóa người dùng.
- RECcer: Tổ chức các sự kiện tuyển dụng, các sự kiện sẽ phải rõ ràng vị trí, ngơn ngữ, kỹ năng u cầu cần phải có. Các câu hỏi tuyển dụng sẽ do RECcer soạn ra. Sau khi xem kết quả phỏng vấn và điểm tổng kết, RECcer có thể duyệt đậu hay rớt.
- Interviewer: Người phỏng vấn được RECcer phân công vào buổi phỏng vấn. Người phỏng vấn sẽ đặt câu hỏi được phân công sẵn trong buổi phỏng vấn và chấm điểm từng câu.
- Candidate: Ứng cử viên phỏng vấn. Có thể tạo CV hoặc upload lên hồ sơ. Khi có sự kiện phỏng vấn thì có thể đăng ký vào sự kiện.
Bên trên là những chức năng cơ bản yêu cầu phải có. Ngồi ra cịn các chức năng khác như là đặt phịng phỏng vấn khơng được trùng nhiều buồi cùng 1 phòng, tạo link Google Meet hoặc Zoom để hỗ trợ buổi phỏng vấn, gỡ blacklist tài khoản sau 2
tháng,...
Từ các yêu cầu trên nhóm đã phân tích và thiết kế use case tổng quát phù hợp.
</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">Hình 2.6 Mơ hình use case của dự án
Sau đó nhóm báo cáo use case và được chấp nhận, nhóm bắt đầu triển khai làm những use case chi tiết hơn.
2.2.2. Thiết kế hệ thống
Sau khi đã có use case, nhóm bắt đầu triển khai các mơ hình dữ liệu:
</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14">Hình 2.7 Mơ hình trong cơ sở dữ liệu
Mơ hình do tất cả thành viên thực hiện, nên cần có sự đồng nhất khi gắn kết lại với nhau.
Sau khi có sự đồng thuận, nhóm bắt đầu thực hiện thiết lập các thực thể trong dự án dựa theo mơ hình đã được thiết kế.
Cơ sở dữ liệu sử dụng là MySQL
</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="15">Hình 2.8 Các đối tượng trong dự án
Trong lúc áp dụng thiết kế, đã có những chỉnh sửa để phù hợp hơn trong dự án so với thiết kế ban đầu.
2.2.3. Lập trình
Sau 3 tuần phân tích u cầu, thiết kế hệ thống thì nhóm bắt đầu chia task ra để xử lý. Bắt đầu từ những chức năng lớn như bảo mật, nghiệp vụ chính.
</div><span class="text_page_counter">Trang 16</span><div class="page_container" data-page="16">Hình 2.9 Một số API chính của dự án
Em tham gia vào việc lập trình những API liên quan đến việc candidate tạo CV, RECcer quản lý các vị trí tuyển dụng trong buổi phỏng vấn, các yêu cầu về kỹ năng, ngôn ngữ trong vị trí candidate đăng ký ứng tuyển. Ngồi ra cịn có kiểm thử các API, viết test case để kiểm tra trước khi triển khai lên host.
Test case được viết bằng Junit và được thiết lập CI/CD trên GitLab. Chỉ khi các API đạt hết tất cả test case 100% mới được merge được code lên nhánh development.
Hình 2.10 EventControllerTest
Em cịn được phân cơng nghiên cứu JWT Authentication và áp dụng cơ chế Access, Refresh Token cho hệ thống.
</div><span class="text_page_counter">Trang 17</span><div class="page_container" data-page="17">Hình 2.11 Logo JWT
JWT là cơ chế bảo mật dữ liệu và thơng tin được mã hóa trong chuỗi JWT, được định dạng theo kiểu JSON. Chuỗi JWT bao gồm header, payload và signature, thông tin được bảo mật và mã hóa nhờ vào 3 thành phần này, chính vì thế dù là cùng 1 thông tin nhưng chuỗi JWT vẫn có thể khác nhau. Dựa vào cơ chế này, ta có thể giải mã những thơng tin trong chuỗi JWT để xác thực và phân quyền người dùng.
Client sẽ không tạo ra chuỗi JWT và gửi lên server để giải mã, mà server sẽ làm việc mã hóa thơng tin xác thực và giải mã thông tin luôn, nhờ vào cơ chế Access, Refresh Token.
Hình 2.12 Cơ chế Access, Refresh Token Ta áp dụng JWT vào cơ chế như sau:
</div><span class="text_page_counter">Trang 18</span><div class="page_container" data-page="18">- Khi người dùng đăng nhập thành công, server sẽ tạo ra refresh token và access token, lưu lại refresh token trong cơ sở dữ liệu và đồng thời đặt tất cả refresh token tạo ra trước đó thành hết hạn. Refresh token sẽ có thời gian hết hạn sau 3 giờ, trong khi access token chỉ có hạn trong vịng 15 giây.
- Khi người dùng truy cập vào các API cần xác thực hay quyền hạn cao, client sẽ gửi lên access token và refresh token để kiểm tra thông tin.
- Nếu access token vẫn cịn hạn, thơng tin access token có tài khoản hợp lệ và phân quyền phù hợp thì sẽ thực hiện tác vụ.
- Nếu access token đã hết hạn thì xác thực thơng tin trong refresh token, khởi tạo access token mới và gửi lại access token cho client, kèm thông báo để client gửi lại access token mới.
- Nếu refresh đều hết hạn, server gửi thông báo cho client yêu cầu đăng nhập trở lại.
Cơ chế trên giúp cho việc phân quyền người dùng, tăng tính bảo mật khi access token chỉ có thời hạn ngắn tránh việc lợi dụng cookies và không cho người dùng đăng nhập nhiều nơi cùng lúc vì refresh token sẽ được tạo mới và các refresh token sẽ không cịn tác dụng.
Hình 2.13 Đăng nhập thành cơng và trả về refresh token cùng access token.
2.2.4. Kiểm thử, triển khai
Nhóm quyết định chọn SAP làm host cho backend.
Sau khi kiểm thử và bắt đầu triển khai lên host SAP cho nhóm frontend React JS sử dụng.
</div><span class="text_page_counter">Trang 19</span><div class="page_container" data-page="19">Hình 2.14 Màn hình chính
</div><span class="text_page_counter">Trang 20</span><div class="page_container" data-page="20">Hình 2.15 Mơ tả cơng việc
</div><span class="text_page_counter">Trang 21</span><div class="page_container" data-page="21">Hình 2.16 Candidate đăng CV để ứng tuyển
</div><span class="text_page_counter">Trang 22</span><div class="page_container" data-page="22">Hình 2.17 Các vị trí tuyển dụng hiện tại.
</div><span class="text_page_counter">Trang 23</span><div class="page_container" data-page="23">Hình 2.18 Màn hình đăng nhập
</div><span class="text_page_counter">Trang 24</span><div class="page_container" data-page="24">Hình 2.19 Thơng tin Candidate
</div><span class="text_page_counter">Trang 25</span><div class="page_container" data-page="25">Hình 2.20 Candidate từ tạo CV
</div><span class="text_page_counter">Trang 26</span><div class="page_container" data-page="26">Hình 2.21 RECcer soạn các câu hỏi cho buổi phỏng vấn
</div><span class="text_page_counter">Trang 27</span><div class="page_container" data-page="27">Hình 2.22 Các câu hỏi hiện có
</div><span class="text_page_counter">Trang 28</span><div class="page_container" data-page="28">Hình 2.23 Interviewer chấm điểm buổi phỏng vấn
</div><span class="text_page_counter">Trang 29</span><div class="page_container" data-page="29">Hình 2.24 RECcer xét duyệt
</div><span class="text_page_counter">Trang 30</span><div class="page_container" data-page="30">Hình 2.25 Tổng hợp các buổi phỏng vấn
</div><span class="text_page_counter">Trang 31</span><div class="page_container" data-page="31">2.3. Kết quả
- Q trình thực tập có những trải nghiệm mới nhưng dễ làm quen. - Học được cách quy trình các doanh nghiệp đang hoạt động. - Cải thiện khả năng làm việc nhóm, giao tiếp với các thành viên. - Biết thêm các ứng dụng, các công vụ mới trong quá trình làm việc. - Được làm quen với những người làm việc chung.
- Đạt được kết quả tốt với các yêu cầu được đặt ra.
- Thái độ khi làm việc nhóm cũng như giao tiếp với mentor tốt.
</div><span class="text_page_counter">Trang 32</span><div class="page_container" data-page="32">Quãng thời gian thực tập tại FSoft đã giúp em cải thiện bản thân rất nhiều trong quy trình làm việc thực tế, tác phong khi làm việc trong doanh nghiệp. Tuy việc thực tập cho những cảm giác mới mẻ, nhưng khi đã làm quen thì việc thực tập rất suôn sẻ và phù hợp với em. Em cũng được trải nghiệm và cải thiện khả năng làm việc nhóm tốt hơn so với trên trường. Em đã quen được các tác phong cũng như quy định trong công ty, và cách hoạt động, giúp đỡ trong nhóm với nhau.
Trong thời gian thực tập, em và nhóm đã hồn thành u cầu của cơng ty. Ngồi ra cịn học được thêm những kỹ năng, cải thiện những điểm yếu của bản thân. Việc thực tập cho em cơ hội trải nghiệm cũng như là cơ hội để em đóng góp sức của mình cho cơng ty.
</div>