báo cáo thực tậpBACKEND với GOLANG

27 18 0
báo cáo thực tậpBACKEND với GOLANG

Đ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

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH 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 BACKEND VỚI GOLANG Công ty thực tập: KMS Technology Người phụ trách: Võ Ngọc Dũng Thực tập sinh: Lê Hữu Thắng Thành phố Hồ Chí Minh, ngày 28 tháng 07 năm 2020 LỜI CẢM ƠN Trân trọng gửi lời cảm ơn Công ty KMS Technology tạo điều kiện cho em có hội thực tập công ty Chỉ vài tháng ngắn, nhờ dẫn tận tình anh chị team, em tiếp thu nhiều kiến thức hay, cần thiết để có nhìn tổng quan cách xây dựng website hoàn chỉnh Chân thành cảm ơn anh chị bỏ thời gian công sức để hướng dẫn em Đặc biệt cảm ơn anh Võ Ngọc Dũng, dạy, hướng dẫn em tận tình, giúp đỡ em làm quen với môi trường làm việc chuyên nghiệp, có khóa học training, giúp em hiểu rõ lập trình website Em xin cảm ơn anh Nguyễn Duy Quang giúp đỡ em lúc khó khăn cơng việc, training kiến thức quan trọng ngơn ngữ Go để làm sản phẩm thời gian qua Cũng xin cảm ơn thầy cô 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 Lê Hữu Thắng Thành phố Hồ Chí Minh, ngày 08 tháng 06 năm 2020 NHẬN XÉT CỦA KHOA Mục lục Chương I: Giới thiệu công ty thực tập 1.Giới thiệu công ty KMS Technology 2.Các sản phẩm công ty a.Katalon Studio .7 b.Kobtion c.Grove Chương II: Nội dung thực tập 1.Tìm hiểu cơng ty .9 2.Nghiên cứu kỹ thuật 3.Viết Unit test 10 4.Thực Project 11 Chương III: Chi tiết Project 12 1.Giới thiệu Project 12 2.Thực 12 3.Kế hoạch 13 a.Giai đoạn 13 b.Giai đoạn 13 c.Giai đoạn 13 4.Kiến trúc Project .14 5.Kiến trúc Backend 14 a.Elasticsearch 15 b.Monstache 16 c.Recommend-service 16 d.Search-service .17 e.Notification-service .17 f.gRPC 17 6.Lịch làm việc 23 Chương IV: Kết luận đánh giá 26 1.Kết luận 26 2.Đánh giá 26 Chương I: Giới thiệu công ty thực tập 1.Giới thiệu công ty KMS Technology KMS thành lập vào năm 2009, với trụ sở Mỹ, cơng ty tồn cầu lĩnh vực Gia công Phần mềm, đồng thời cung cấp dịch vụ Phát triển sản phẩm phần mềm, Tư vấn cung cấp giải pháp Công Nghệ Thông Tin Bên cạnh việc cung cấp dịch vụ Gia cơng Phần mềm, KMS có sản phẩm vươn tầm giới tuyệt vời như: Katalon, Kobiton, Sprynkl sớm có sản phẩm khác mắt Trải qua 10 năm hình thành phát triển, KMS có 1000 nhân viên tài Những năm gần đây, KMS ln bình chọn nằm top cơng ty Công Nghệ Thông Tin hàng đầu Việt Nam với môi trường làm việc thân thiện, ấm cúng đáng để phát triển nghiệp thân 2.Các sản phẩm công ty a.Katalon Studio Katalon Studio giải pháp kiểm thử tự động phát triển Katalon LLC (công ty KMS) Phần mềm xây dựng dựa khung tự động hóa nguồn mở Selenium, Appium với giao diện IDE chuyên dụng để kiểm thử ứng dụng web, API, di động máy tính để bàn b.Kobtion Kobiton đời năm 2016 từ vườn ươm UpStar Labs, nhánh đầu tư ươm tạo khởi nghiệp thuộc KMS Technology, nhóm kỹ sư Việt Nam phát triển Trên tảng công nghệ điện toán đám mây, Kobiton tạo giải pháp cho doanh nghiệp quản lý, truy cập kiểm thử ứng dụng di động từ xa, tối ưu chi phí phát triển sản phẩm rút ngắn thời gian đưa phần mềm thị trường Kobiton phần mềm điện toán đám mây cung cấp giải pháp cho doanh nghiệp quản lý, truy cập kiểm thử ứng dụng di động từ xa Hồi tháng 10.2018, phần mềm nhận đầu tư triệu USD từ vòng gọi vốn ươm tạo (Seed) Năm 2018, Kobiton thành lập công ty Mỹ với đội ngũ 40 người bao gồm 30 kỹ sư Việt Số liệu nhà phát triển tự cơng bố đến Kobiton có 30.000 người dùng cá nhân, 500 doanh nghiệp ứng dụng với tên tuổi lớn Capgemini, Frontier Airlines, GreenSky c.Grove Grove HR sản phẩm HR phát triển xây dựng công ty công nghệ hàng đầu KMS Technology Với mục tiêu giúp doanh nghiệp Việt Nam phát triển tối ưu, Grove HR “số hoá" toán nhân bao gồm:  Quản lý tồn diện hành trình nhân viên (Employee Journey) từ tuyển dụng đến offboarding  Đưa tuyển dụng trở thành lợi cạnh trạnh doanh nghiệp  Mang đến trải nghiệm tối ưu dành cho nhân viên thông qua ứng dụng điện thoại  Giúp nhân viên làm việc hiệu cách “số hoá" “đơn giản hố” quy trình nhân Chương II: Nội dung thực tập 1.Tìm hiểu cơng ty Thời gian: ngày Nội dung: Giới thiệu công ty, tổ chức công ty, làm quen với team Được nghe chị HR dẫn vịng cơng ty, nghe buổi giới thiệu công ty, cách thức làm việc, giấc làm, nội quy cần tuân thủ, số công việc cần phải làm ngày đầu thực tập Kết quả: Hiểu rõ thêm công ty KMS, trình thành lập phát triển Nhận thiết bị từ phịng IT cơng ty Lịch làm việc: Từ thứ – thứ (9:00-18:00) 2.Nghiên cứu kỹ thuật Thời gian: 3~4 tuần 2.1.Công cụ làm việc Thời gian: ngày Nội dung: Tìm hiểu cơng cụ Git, làm training liên quan đến Git Trong thời gian này, mentor hướng dẫn thực tập sinh, đưa tập nhỏ lớn để giúp thực tập sinh hiểu rõ thêm công cụ Git Thực hiện: Thực hành sử dụng công cụ Git dựa training sẵn có cơng ty Kết quả: Thuần thục, hiểu rõ câu lệnh, commit, liên quan đến Git, giúp thực tập sinh có kiến thức để chuẩn bị thực Project quản lý Source code 2.2.Clean Code Thời gian: tuần Nội dung: Được training kỹ clean code, viết code dễ hiểu, dễ đọc, dễ tái sử dụng Những kiến thức quan trọng việc code, mục đích clean code nhằm bảo trì phần mềm dễ hơn,… - Tìm hiểu tiêu chuẩn đặt tên biến, ý nghĩa việc comment line, - Rèn luyện tư code, refactor lại code người khác - Rèn luyện khả tái sử dụng code, code “sạch” Trong thời gian này, mentor đưa project lập trình Java đọc/ghi file giao thời hạn tuần cho thực tập sinh Yêu cầu thực tập sinh “clean code” Thực hiện: Đọc slide giảng “Clean Code”, đọc hiểu Code, phân tích, tiến hành clean lại project Kết quả: Hiểu ý nghĩa, mục đích việc “Clean Code” Biết thêm số quy tắc viết code, code sạch, code gọn Nâng cao kỹ thuật lập trình với ngơn ngữ Java Làm quen với nhiều khái niệm mới: Annotations, Field Reflection,… 2.3.Lập trình web Thời gian: 1,5 tuần Nội dung: Tìm hiểu lập trình web, kiến trúc website, cách hoạt động website, chế quy tắc gửi request đến server, cách xử lý lỗi website,… Mentor đưa slide giảng lập trình web bản, yêu cầu thực tập sinh đọc hiểu báo cáo lại Sau hoàn thành việc đọc hiểu, mentor đưa tập nhỏ website cho thực tập sinh thực hành Yêu cầu thêm vào chức năng: sửa, xóa, phân quyền truy cập,… Thực hiện: Khoảng 1-2 ngày đầu, đọc hiểu slide giảng, đồng thời lên google tìm hiểu thêm kiến thức khác đề cập slide Mentor đưa tập web bản: Java + Thymeleaf, yêu cầu thực tập sinh khoảng tuần hoàn thành yêu cầu đưa tập Kết quả: Hiểu lập trình web Học thêm khái niệm lập trình web, biết thêm Thymeleaf template Spring dùng để xử lý tạo HTML,CSS,Javascript 3.Viết Unit test Thời gian: 1,5 tuần 10 - Thi Nguyễn 3.Kế hoạch a.Giai đoạn Tìm hiểu cơng nghệ sử dụng Project Xây dựng frontend với VueJS Xây dựng backend với Golang Tích hợp API lấy thơng tin sách từ API google books Xây dựng database bản: sách,kindle, migrate account user công ty, transaction mượn, trả sách Demo thử nghiệm để xác thực tính khả thi Project Giai đoạn dừng lại mức demo đơn giản, Nhằm chứng minh tính khả thi dự án b.Giai đoạn Cải thiện UI-UX Xây dựng microservices với Golang Deploy mơi trường dev với Docker Tích hợp elasticsearch với server-side Hoàn thành rating, review sách lấy từ API goodread Hồn thiện database, tham khảo quy trình mượn/trả sách cơng ty, hồn thiện transactions, quản lý state transaction c.Giai đoạn Cải thiện UI-UX Tích hợp Recommend System anh Trung Nguyễn phát triển vào server-side 13 Thêm micro service notification: Hỗ trợ gửi thông báo đến người dùng Hoàn thiện việc gửi email đến user Deploy sản phẩm lên server công ty để tester kiểm thử 4.Kiến trúc Project Project bao gồm thành phần - Giao diện (Front-end) viết VueJS - Server-side (Backend) viết Golang Python 5.Kiến trúc Backend Đây phần/ nội dung mà tập doanh nghiệp, sinh viên thực KMS 14 Giới thiệu kỹ thuật áp dụng: a.Elasticsearch Elasticsearch cơng cụ tìm kiếm dựa tảng Apache Lucene Nó cung cấp máy tìm kiếm dạng phân tán, có đầy đủ cơng cụ với giao diện web HTTP có hỗ trợ liệu JSON Elasticsearch phát triển JAVA Ưu điểm: - Tìm kiếm liệu nhanh chóng, mạnh mẽ dựa Apache Lucene ( nearrealtime searching) - Có khả phân tích liệu (Analysis data) 15 - Khả mở rộng theo chiều ngang - Hỗ trợ tìm kiếm mờ (fuzzy), tức từ khóa tìm kiếm bị sai lỗi tả hay khơng cú pháp có khả elasticsearch trả kết tốt - Hỗ trợ Structured Query DSL (Domain-Specific Language ), cung cấp việc đặc tả câu truy vấn phức tạp cách cụ thể rõ ràng JSON.Các bạn tìm hiểu thêm - Hỗ trợ nhiều Elasticsearch client Java, PhP, Javascript, Ruby, NET, Python Nhược điểm: - Elasticsearch thiết kế cho mục đích search, với nhiệm vụ khác ngồi search CRUD elastic so với database khác Mongodb, Mysql … Do người ta dùng elasticsearch làm database chính, mà thường kết hợp với database khác - Trong elasticsearch khơng có khái niệm database transaction , tức khơng đảm bảo tồn vẹn liệu hoạt động Insert, Update, Delete.Tức thực thay đổi nhiều ghi xảy lỗi làm cho logic bị sai hay dẫn tới mát liệu Đây phần khiến elasticsearch không nên database - Khơng thích hợp với hệ thống thường xuyên cập nhật liệu Sẽ tốn cho việc đánh index liệu b.Monstache Monstache công cụ, phần mềm thực đồng liệu từ MongoDB sang Elasticsearch Monstache giống với Transporter nhiên thực đồng liệu cách realtime, tức có thay đổi liệu MongoDB (thêm/sửa/xóa) tự động cập nhật tới Elasticsearch Do tính Elasticsearch tìm kiếm fulltext Thế nên project này, sử dụng thêm MongoDB làm database lưu trữ, Elasticsearch database phục vụ tìm kiếm Để search xác liệu có database chính, Elasticsearch phải đồng realtime với MongoDB Đây mục đích Monstache 16 c.Recommend-service Service viết Python Dựa vào liệu đầu vào chi tiết sách bất kì, hệ thống tính tốn, đưa sách tương tự có hệ thống d.Search-service Viết Golang Mục đích service nhận tìm kiếm fulltext, bao gồm search sách tiếng việt e.Notification-service Viết Golang Service connect tới firebase Nhận trách nhiệm thông báo, lưu trữ notification cho người dùng theo thời gian thực f.gRPC Bài tốn đặt ra: request phía client phải cần nhiều service chạy server để tổng hợp thông tin response cho client Sự liên lạc server lúc vấn đề trước tất service chạy server khoẻ re, local call nên khơng có Cụ thể là, server muốn lấy data từ server khác cần phải encode data (JSON, XML), phía nhận phải làm cơng việc ngược lại decode data hiểu lại phải encode lại tiếp Việc tiêu tốn nhiều tài nguyên xử lý (CPU) mà lẽ cần làm bước đầu cuối (đầu nhận trả cuối cùng) Tối ưu cho việc "giao tiếp" server lý gRPC đời *Định nghĩa 17 - gRPC kết hợp Protocol Buffers http2, Protocol Buffers phát triển google nhẹ hơn, nhanh cung cấp hiệu tốt so với sử dụng XML JSON - Cho phép định nghĩa cấu trúc data dạng file protoc tự động generate file sử dụng để giao tiếp với ngôn ngữ mà muốn - Các ngôn ngữ hỗ trợ: C++, Java, Python, Go,… Ví dụ: Chúng ta tạo service tasks với tính get all tasks thêm tasks Trước tiên định nghĩa model tasks request response trả 18 Sau register định nghĩa vào task-service 19 Tiếp theo generate file proto Việc generate thêm scripts định nghĩa sẵn vào project, chạy lệnh generate protoc proto_path=api/proto/v1 proto_path=third_party go_out=plugins=grpc:pkg/api/v1 todo-service.proto Proto_path dẫn tới file proto định nghĩa phía Việc tạo file go với tên todo-service.pb.go bạn không cần quan tâm nhiều đến file thứ định nghĩa file nguồn todo.proto Tiếp theo cấu hình server file server.go 20 21 Chúng ta tạo file main.go chạy func RunServer hàm main cài đặt thành công Lúc muốn service khác giao tiếp với service task, việc copy file todo-service.pb.proto todo-service.pb.gw.go vào service đó, viết function Get, Create bình thường Khởi tạo connect tới service task 22 Định nghĩa function mà muốn giao tiếp với service task 23 Khi service cần giao tiếp, lấy liệu từ service task, việc gọi function service 6.Lịch làm việc Làm việc từ thứ – (9:00 – 17:30) Tuần Cơng việc Tìm hiểu cơng ty Tìm hiểu cách liên lạc, thắc Người hướng dẫn Mức độ hoàn thành Anh Võ Ngọc Dũng 100% Đánh giá 24 – 15 16-24 mắc qua email Nhận thiết bị từ công ty Làm task đơn giản Training công cụ Training Học kiến thức lập trình web Học clean code Học framework Demo lập trình web Đọc code project Viết uni test Lên ý tưởng project Tìm hiểu Golang Set up demo Demo project Tiếp tục viết thêm API Set up authentication, authorization Tìm API get thơng tin sách từ ISBN Hồn thiện backend Cải thiện backend Rating, transactions, books, user, quản lý,… Deploy sản phẩm lên server thử nghiệm Viết document bàn giao sản phẩm lại cho team Anh Võ Ngọc Dũng 100% Anh Võ Ngọc Dũng 100% Anh Võ Ngọc Dũng 100% Anh Võ Ngọc Dũng 100% Anh Nguyễn Duy Quan Anh Nguyễn Duy 100% Quang Anh Nguyễn Duy 100% Quan Anh Nguyễn Duy Quang 100% Anh Võ Ngọc Dũng 100% 25 Chương IV: Kết luận đánh giá 1.Kết luận Sau kết thúc chương trình thực tập KMS, sinh viên tự đánh giá thân tiếp thu thêm nhiều kiến thức mới, đặc biệt lĩnh vực lập trình web, hiểu thêm khái niệm, mục đích, ý nghĩa giai đoạn cơng việc q trình phát triển sản phẩm Sinh viên học kỹ mềm lúc làm việc, làm quen với quy trình sản xuất phần mềm,… Những kinh nghiệm quý báu hành trang quan trọng cho thân sinh viên, kiến thức vững chãi cho nghiệp sau Một lần nữa, sinh viên Lê Hữu Thắng xin cảm ơn công ty KMS giúp đỡ cho sinh viên suốt trình thực tập làm việc, chân thành cảm ơn Thầy/Cô Khoa Công nghệ phần mềm tạo điều kiện tốt cho sinh viên hoàn thành tập doanh nghiệp 2.Đánh giá Bên cạnh kiến thức tiếp thu được, thân cịn chưa có nhiều kinh nghiệm, nên sai sót điều khơng thể tránh khỏi Trong trình thực tập, làm việc, sinh viên tự đánh giá thân điểm sau chưa làm được: - Code chưa clean Đối với số feature, chưa tích lũy nhiều kiến thức, nên giải pháp đưa có - thể chưa tốt Estimate cơng việc chưa xác, đơi trễ tiến độ vài ngày Những sai sót giúp ích sinh viên nhận ra, cải thiện thân tương lai 26 Tài liệu tham khảo [Golang] https://medium.com/@thedevsaddam/build-restful-api-service-in-golang-usinggin-gonic-framework-85b1a6e176f3 [Golang Microservices] https://medium.com/@amsokol.com/tutorial-how-to-develop-gogrpc-microservice-with-http-rest-endpoint-middleware-kubernetes-daebb36a97e9 [Goodread API] https://www.goodreads.com/api [Keycloak Golang] https://github.com/Nerzal/gocloak [gRPC] https://medium.com/red-crane/grpc-and-why-it-can-save-you-development-time436168fd0cbc 27 ... yêu cầu thực tập sinh đọc hiểu báo cáo lại Sau hoàn thành việc đọc hiểu, mentor đưa tập nhỏ website cho thực tập sinh thực hành Yêu cầu thêm vào chức năng: sửa, xóa, phân quyền truy cập,… Thực hiện:... quan đến Git Trong thời gian này, mentor hướng dẫn thực tập sinh, đưa tập nhỏ lớn để giúp thực tập sinh hiểu rõ thêm công cụ Git Thực hiện: Thực hành sử dụng công cụ Git dựa training sẵn có cơng... xác thực tính khả thi Project Giai đoạn dừng lại mức demo đơn giản, Nhằm chứng minh tính khả thi dự án b.Giai đoạn Cải thiện UI-UX Xây dựng microservices với Golang Deploy môi trường dev với

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

Từ khóa liên quan

Mục lục

  • Chương I: Giới thiệu công ty thực tập

    • 1.Giới thiệu công ty KMS Technology

    • 2.Các sản phẩm công ty

      • a.Katalon Studio

      • b.Kobtion

      • c.Grove

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

        • 1.Tìm hiểu công ty

        • 2.Nghiên cứu kỹ thuật

        • 3.Viết Unit test

        • 4.Thực hiện Project

        • Chương III: Chi tiết Project

          • 1.Giới thiệu Project

          • 2.Thực hiện

          • 3.Kế hoạch

            • a.Giai đoạn 1

            • b.Giai đoạn 2

            • c.Giai đoạn 3

            • 4.Kiến trúc Project

            • 5.Kiến trúc Backend

              • a.Elasticsearch

              • b.Monstache

              • c.Recommend-service

              • d.Search-service

              • e.Notification-service

              • f.gRPC

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan