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 ỨNG DỤNG WEB VỚI NGÔN NGỮ LẬP TRÌNH JAVA Công ty thực tập KMS Healthcare Người phụ trách Bùi Minh Hải Thực tập si[.]
Trang 1TRƯỜ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 ỨNG DỤNG WEB VỚI NGÔN NGỮ LẬP TRÌNH JAVA
Công ty thực tập: KMS Healthcare Người phụ trách: Bùi Minh Hải Thực tập sinh: Nguyễn Anh Kiệt
TP HỒ CHÍ MINH, 2022
Trang 2LỜI MỞ ĐẦU
Với sự phổ biến của Internet và sự phát triển của các nền tảng trực tuyến, lĩnh vực phát triển Web hiện nay đang không ngừng phát triển và dần trở nên quan trọng trong những năm gần đây Các nhu cầu về thiết kế, phát triển và bảo trì website cũng như các ứng dụng web vẫn tiếp tục tăng, chính vì thế các nhà phát triển web vẫn đang đóng một vai trò không thể thiếu trong lĩnh vực này
Báo cáo thực tập này sẽ trình bày những công việc và trải nghiệm của em trong quá trình thực tập tại công ty KMS HealthCare với tư các là một lập trình viên Backend Quá trình thực tập diễn ra hơn 10 tuần, từ tháng 10 đến tháng 12 năm 2022, đã mang đến cho em cơ hội tích lũy kinh nghiệm làm việc thực tế đồng thời nâng cao
kỹ thuật về lập trình web
Trong thời gian thực tập của mình, em đã có cơ hội làm việc với dự án thực tế cùng với các anh chị lập trình viên có dày dặn kinh nghiệm Thông qua kỳ thực tập này,
em đã được học thêm về quy trình và vòng đời phát triển phần mềm, các công cụ, công nghệ và cả những best-practices cho việc phát triển một ứng dụng backend Trong báo cáo này, em sẽ trình bày tổng quan về các nhiệm vụ và trách nhiệm mà
em đã thực hiện trong thời gian thực tập, bao gồm dự án mà em đã tham gia và những thách thức kỹ thuật mà em gặp phải Em cũng sẽ trình bày về các kỹ năng và kiến thức mà em đã đạt được và sự giúp ích của chúng trong sự nghiệp tương lai của em với mục tiêu trở thành một lập trình viên và phát triển ứng dụng chuyên nghiệp
Nhìn chung, kỳ thực tập này là một trải nghiệm học tập quý giá của em, nó cho phép em áp dụng kiến thức lý thuyết của mình vào các dự án thực tế Việc thực tập cũng mang lại cho em cơ hội làm việc trong môi trường chuyên nghiệp và phát triển thêm về các kỹ năng mềm của bản thân
Trang 3LỜI CẢM ƠN
Em xin bày tỏ lòng biết ơn chân thành đến KMS Healthcare đã tạo cơ hội cho em hoàn thành quá trình thực tập của mình tại công ty Em đặc biệt cảm ơn mentor của
em, anh Bùi Minh Hải, vì sự hướng dẫn và hỗ trợ tận tình trong suốt thời gian em làm việc tại KMS Healthcare Sự khéo léo và chuyên môn của anh Hải đã giúp ích
em rất nhiều trong việc phát triển kỹ năng chuyên môn
Em cũng xin cảm ơn các thành viên còn lại trong Team SDLC Compliance vì sự hỗ trợ và hướng dẫn của các anh chị, đã cho phép em được học hỏi và phát triển hơn ở
vị trí lập trình viên Backend
Em cũng muốn bày tỏ lòng biết ơn của mình tới Khoa Công nghệ Phần mềm đã cung cấp cho em những kiến thức và kỹ năng cần thiết để em có được đợt thực tập thành công này Sự hỗ trợ và hướng dẫn của các giảng viên và cố vấn học của em là
vô giá trong sự phát triển nghề nghiệp của em
Cuối cùng, em xin gửi lời cảm ơn tới bạn bè và gia đình đã hỗ trợ và động viên em trong suốt quá trình vừa thực tập vừa đi làm nhiều áp lực Sự động viên ấy chính là nguồn động lực và cảm hứng cho em không ngừng phát triển bản thân
Thành phố Hồ Chí Minh, ngày 21 tháng 12 năm 2022
Nguyễn Anh Kiệt
Trang 4NHẬN XÉT CỦA KHOA
Trang 5
MỤC LỤC
2.1 Tìm hiểu công ty, quy trình làm việc và văn hóa công ty 3
2.2.2 Phát triển ứng dụng Web với Spring Framework 4
2.3 Tham gia phát triển ứng dụng trong dự án thực tế 5
Trang 6Chương 1 Giới Thiệu Công Ty Thực Tập
1.1 Giới thiệu về công ty KMS Healthcare
KMS Healthcare là một trung tâm phát triển phần mềm trực thuộc KMS Technology, được giới thiệu vào ngày 30-9-2022 KMS Healthcare tập trung chủ yếu vào mảng dịch vụ và giải pháp trong lĩnh thực y tế cho các đối tác toàn cầu KMS Healthcare hiện đang làm việc với gần 50 nền tảng tích hợp, cung cấp dịch vụ cho 334 triệu bệnh nhân và hơn 100 triệu lượt khám bệnh tại thị trường Hoa Kỳ
Hình 1 KMS Healthcare đến Việt Nam
KMS Healthcare có thể là một cái tên mới, nhưng thương hiệu KMS thì không phải
là một cái tên xa lạ KMS Technology là một công ty phần mềm Việt Nam, được thành lập năm 2009 KMS Technology chuyên cung cấp các dịch vụ phát triển phần mềm, tư vấn triển khai các giải pháp công nghệ và khởi nghiệp & đầu tư
Hình 2 Văn phòng công ty KMS Technology
1
Trang 71.2 Sản phẩm của công ty
KMS Healthcare cung cung cấp dịch vụ phát triển và triển khai các giải pháp công nghệ đặc biệt trong lĩnh vực chăm sóc sức khỏe trên nhiều nền tảng Các khách hàng của KMS Healthcare chủ yếu tập trung ở thị trường Mỹ và Châu Âu, ví dụ như LexisNexis, Elsevier,
Ngoài các khách hàng ở Mỹ và Châu Âu, KMS cũng đã và đang phát triển riêng cho mình những sản phẩm phần mềm Ví dụ như nền tảng hỗ trợ kiểm thử phần mềm Katalon và Kobiton, hay ứng dụng phát triển wireframe Visily Các sản phẩm này đang từng bước chinh phục khách hàng không chỉ trong Việt Nam mà còn ở ngoài thế giới
Hình 3 Katalon – một trong những sản phẩm tự hào nhất của KMS
Hình 4 Visily - phần mềm hỗ trợ thiết kế đang trên đà phát triển
2
Trang 8Chương 2 Nội Dung Thực Tập
2.1 Tìm hiểu công ty, quy trình làm việc và văn hóa công ty
Tìm hi u v h sinh thái c a KMS Technology và KMS Healthcare, các công tyể ề ệ ủ
tr c thu c, các s n ph m đang phát tri n và nh ng đ i tác c a KMS Tìm hi uự ộ ả ẩ ể ữ ố ủ ể
v văn hóa và môi tr ng làm vi c t i công ty cũng nh các phúc l i khi trề ườ ệ ạ ư ợ ở thành nhân viên t i công ty này ạ
Hình 5 KMS FlexiWork program
Tìm hi u v quy trình làm vi c n i b công ty, đ c h ng d n s d ng cácể ề ệ ộ ộ ượ ướ ẫ ử ụ thi t b và quy trình b o m t c a công ty khi s d ng các thi t b ế ị ả ậ ủ ử ụ ế ị
Tìm hi u v các lu t l và yêu c u trong và ngoài công ty, tìm hi u v b lu tể ề ậ ệ ầ ể ề ộ ậ lao đ ng và chính sách phúc l i c a công ty ộ ợ ủ
2.2 Nghiên cứu kỹ thuật
2.2.1 Kỹ thuật lập trình Java
Thực tập sinh được nghiên cứu, ôn tập và training về kỹ thuật lập trình Java Nội dung bao gồm: Lập trình hướng đối tượng trong Java, Java 8, Collections, Exception Handling và các kỹ thuật liên quan đến clean code
Việc ôn tập và training này diễn ra trong 3 ngày, sử dụng công cụ Intellij IDE và được nghiệm thu bằng các bài kiểm tra cơ bản dưới sự giám sát của mentor
3
Trang 9Hình 6 Intellij IDEA
2.2.2 Phát triển ứng dụng Web với Spring Framework
Thực tập sinh nghiên cứu Spring Framework, một framework nổi tiếng cho việc phát triển ứng dụng web dựa trên ngôn ngữ lập trình Java Các nội dung bao gồm: Tìm hiểu về Spring Core, phát triển ứng dụng web với Spring Boot, thao tác với cơ
sở dữ liệu sử dụng Spring Data JPA, và phát triển ứng dụng micro-service với Spring Cloud
Hình 7 Spring framework logo
Sau thời gian hơn 2 tuần nghiên cứu và thực hành, em đã hiểu và áp dụng thành công các nội dung trên trong việc phát triển ứng dụng web cơ bản
2.2.3 Quản lý source code với Git và Github
Thực tập sinh được training về kỹ năng sử dụng git và github trong môi trường làm việc thực tế, ví dụ như cách đặt tên nhánh, cách xử lý khi gặp xung đột giữa các nhánh Thực tập sinh được thực hành sử dụng git và github dựa trên những quy ước
và quy định trong một project thực tế
4
Trang 10Hình 8 Git và github
2.2.4 Quản lý công việc với Jira
Th c t p sinh đ c training v kỹ năng s d ng Jira trong d án th c t , đ cự ậ ượ ề ử ụ ự ự ế ượ
h c v quy trình qu n lý công vi c trong d án và các b c nh n vi c ho c ọ ề ả ệ ự ướ ậ ệ ặ thay đ i tr ng thái công vi c Vi c h c và th c hành quy trình làm vi c v i Jiraổ ạ ệ ệ ọ ự ệ ớ giúp ng i qu n lý d dàng qu n lý các công vi c mình đang làm, đ ng th i ườ ả ễ ả ệ ồ ờ
ph i h p v i đ ng nghi p trong các công vi c chung m t cách t t h n ố ợ ớ ồ ệ ệ ộ ố ơ
Hình 9 Jira logo
2.3 Tham gia phát tri n ng d ng trong d án th c t ể ứ ụ ự ự ế
Sau m t vài quá trình đánh giá v chuyên môn, th c t p sinh đ c tham gia ộ ề ự ậ ượ vào d án th c t đ trau d i thêm v kỹ năng c ng và kỹ năng m m Th c ự ự ế ể ồ ề ứ ề ự
t p sinh đ c tr c ti p tham gia vào vi c th o lu n và đ a ra các gi i pháp ậ ượ ự ế ệ ả ậ ư ả cho các v n đ mà d án đang g p ph i Th c t p sinh cùng v i các anh ch ấ ề ự ặ ả ự ậ ớ ị
l p trình viên chuyên nghi p khác gi i quy t các v n đ và các bài toán trong ậ ệ ả ế ấ ề
d án Qua vi c tham gia d án th c t , em đã h c đ c r t nhi u v kỹ năng ự ệ ự ự ế ọ ượ ấ ề ề làm vi c đ c l p cũng nh làm vi c nhóm ệ ộ ậ ư ệ
5
Trang 11Chương 3 Dự Án Sdlc Compliance
3.1 Giới thiệu về dự án SDLC Compliance
Ở Mỹ, khi phát triển một phần mềm hoặc một thiết bị, sản phẩm y tế, doanh nghiệp
đó phải có các tài liệu mô tả quá trình phát triển sản phẩm, những ứng dụng mà sản phẩm mang lại và những rủi ro khi sử dụng sản phẩm Các mô tả trên sẽ được gửi đến cho các cơ quan thẩm quyền xác minh và làm thủ tục Tuy nhiên quá trình làm thủ tục này rất tốn thời gian bởi số lượng văn bản cần hoàn thiện, cũng như nội dung của các văn bản phải được tuân theo một tiêu chuẩn xác định Nền tảng SDLC Compliance đem đến giải pháp cho vấn đề này Dự án này dự kiến sẽ hoàn thành trong vòng 5 tháng, với số lượng thành viên ban đầu từ 18 thành viên, và sau khoảng 2 tháng thì tăng lên 30 thành viên
SDLC Compliance cung cấp nền tảng giúp hỗ trợ người dùng trong việc tạo lập các văn bản giúp ích trong công việc pháp lý cũng như công việc thẩm định sản phẩm Nhóm phát triển sản phẩm sẽ thông qua việc điền thông tin trả lời vào các câu hỏi
có sẵn được sắp xếp theo thứ tự, để sau mỗi lần trả lời hết các câu hỏi, người dùng
sẽ nhận được văn bản tương ứng với các nội dung đã trả lời trước đó Các văn bản này sẽ được đánh giá và thẩm định bởi những người khác trong nhóm phát triển sản phẩm để đưa ra được văn bản chính xác và hoàn chỉnh nhất, và sẽ được ký xác nhận
ở mỗi văn bản
Hình 10 Logo dự án SDLC Compliance
6
Trang 123.2 Kiến trúc, công nghệ và nền tảng hỗ trợ
3.2.1 Kiến trúc
Microservice
SDLC Compliance sử dụng kiến trúc microservice Kiến trúc này giúp việc triển khai được dễ dàng hơn, đặc biệt với nhân lực lớn cùng làm việc với nhau Micro-service cho phép việc phát triển độc lập và chuyên biệt cho từng tính năng, giúp giảm sự chồng chéo công việc cũng như dễ kiểm soát lỗi nhờ vào tính độc lập và chuyên biệt đó Dự án SDLC Compliance được chia thành 10 components nhỏ bao quát cho toàn bộ hệ thống Các components này được giao tiếp với nhau thông qua Feign Clients – một thư viện hỗ trợ của Spring Cloud Về thiết kế chi tiết hệ thống
em xin phép được bỏ qua vì lý do bảo mật nội dung của công ty
Hình 11 Minh họa kiến trúc microservice
Multi-tenancy
Multi-tenancy có nghĩa là một phiên bản duy nhất của phần mềm và cơ sở hạ tầng
hỗ trợ của nó phục vụ nhiều khách hàng Mỗi khách hàng chia sẻ ứng dụng phần mềm và cũng chia sẻ một cơ sở dữ liệu Nhưng dữ liệu của mỗi khách hàng bị cô lập và vẫn vô hình đối với những khách hàng khác Vì SDLC Compliance sẽ được chủ sở hữu cho các khách hàng khác thuê lại, nên hệ thống cần có sự tách biệt giữa các khách hàng khác nhau Việc sử dụng kiến trúc multi-tenancy giúp giảm chi phí vận hành hơn, vì chi phí cơ sở hạ tầng sẽ ít hơn so với các kiến trúc truyền thống Tuy nhiên kiến trúc này cũng có nhược điểm của nó, ví dụ như khó backup data riêng lẻ cho từng tenant
7
Trang 13Hình 12 Các models kiến trúc multi-tenancy
3.2.2 Công nghệ
Java và Spring Framework
Ngôn ngữ lập trình Java được sử dụng làm công cụ chính cho việc phát triển Backend của hệ thống Java là một ngôn ngữ lập trình mạnh mẽ và rất phổ biến Chính vì sự phổ biến ấy mà Java được sử dụng trong dự án này Trong dự án SDLC Compliance này, nhóm phát triển sử dụng Java phiên bản 8, cùng với Java 8 là Gradle cho việc package managing
Hình 13 Gradle package manager
Spring framework là một framework nổi tiếng và chiếm thị phần cao nhất hiện nay trong việc phát triển ứng dụng web dựa trên ngôn ngữ Java Spring rất nhẹ, trong suốt và có cộng đồng người dùng rất lớn Trong dự án SDLC Compliance, Spring Boot, Spring Data JPA, Spring Batch, Spring Cloud là những cái tên hỗ trợ đắc lực trong việc phát triển dự án
8
Trang 14Hình 14 Minh họa hệ sinh thái Spring
ReactJs
ReactJs là một thư viện Javascript xu hướng hiện nay và hỗ trợ các lập trình viên xây dựng các ứng dụng Single Page Application ReactJs là sản phẩm được phát triển bởi Facebook Trong dự SDLC Compliance, ReactJs và Typescript được sử dụng chính trong việc phát triển giao diện của platform Bên cạnh ReactJs, SDLC Compliance còn sử dụng các thư viện liên quan đến ReactJs như Redux, React Router,…
Hình 15 Thư viện ReactJs
Jwt
JSON Web Token (JWT) là 1 tiêu chuẩn mở (RFC 7519), định nghĩa cách thức truyền tin an toàn giữa các ứng dụng bằng một đối tượng JSON Dữ liệu truyền đi
sẽ được mã hóa và chứng thực, có thể được giải mã để lấy lại thông tin và đánh dấu tin cậy nhờ vào “chữ ký” của nó SDLC Compliance sử dụng JWT để xác thực
9
Trang 15người dùng cũng như lưu trữ các thông tin cần thiết để giao tiếp giữa các services.
Ở mỗi services sẽ có các hàm để giải mã các token này
Hình 16 Quy trình làm việc của JWT
3.2.3 Nền tảng hỗ trợ
Amazon Web Services
Amazon Web Services (AWS) là nền tảng đám mây toàn diện và được sử dụng rộng rãi nhất, cung cấp trên 200 dịch vụ đầy đủ tính năng từ các trung tâm dữ liệu trên toàn thế giới
AWS đóng vai trò rất quan trọng trong dự án SDLC Compliance AWS là nơi triển khai ứng dụng, lưu trữ dữ liệu, xác thực, cân bằng tải và giám sát hệ thống Các service được sử dụng trong dự án có thể kể đến như: Ecs, Cloudwatch, Gateway, S3, Dynamo database, Lambda function,…
Hình 17 ECS – Elastic Container Service
10
Trang 163.3 Công việc của thực tập sinh và các khó khăn
Trong dự án SDLC Compliance này, em đã có cơ hội được tham gia và đóng góp nhiều cho dự án, đặc biệt về phát triển Backend Dưới đây là một số công việc em
đã làm:
- Thiết kế và triển khai các lược đồ cơ sở dữ liệu để đáp ứng các yêu cầu của khách hàng
- Phát triển các Restful Api để giao tiếp giữa giao diện người dùng và lõi của phần mềm
- Xử lý lỗi và khắc phục các sự cố trong quá trình phát triển ứng dụng
- Hỗ trợ mọi người trong việc review code và kiểm tra phần mềm
- Tham gia vào lập trình giao diện ở các component không quá phức tạp
- Tham gia cài đặt và cấu hình cho các AWS Service
Ở giai đoạn đầu thực tập, em đã gặp phải một số thách thức về kỹ thuật Những khó khăn này đến từ việc các công nghệ được áp dụng khá mới với em, cũng như vì em chưa thành thạo các công nghệ cũ Tuy nhiên, với sự hỗ trợ của nhóm và mentor,
em đã bắt kịp nhanh chóng và cũng có những đóng góp tích cực cho dự án Bản thân em cũng tự hào khi có thể đóng góp vào sự thành công của dự án và hỗ trợ các anh chị bằng mọi cách có thể
11
Trang 17KẾT LUẬN
Kỳ thực tập của em tại KMS Healthcare là một trải nghiệm học tập quý giá giúp em
có được những kỹ năng và kiến thức thực tế về phát triển ứng dụng web, đặc biệt là phát triển Backend Em đã có cơ hội làm việc trong dự án thực tế và và đóng góp một phần công sức nhỏ vào sự thành công của dự án đó Em cũng hiểu rõ hơn về ngành chăm sóc sức khỏe cũng như những thách thức và yêu cầu riêng của việc phát triển công nghệ và phần mềm liên quan đến chăm sóc sức khỏe
Em cảm ơn KMS Healthcare đã cho em cơ hội này và cảm ơn những thành viên trong nhóm phát triển cũng như mentor của em Những kiến thức và kinh nghiệm
em học được trong quá trình thực tập thực sự là bước ngoặt đối sự nghiệp trở thành
kỹ sư phần mềm chuyên nghiệp của em
Nhìn chung, kỳ thực tập này là một trải nghiệm bổ ích và phong phú đã giúp em phát triển cả về mặt cá nhân và nghề nghiệp Em rất biết ơn về cơ hội được tham gia vào kỳ thực tập này và tin rằng đây chính là hành trang để em bước vào con đường
sự nghiệp của mình
12