Tìm hiểu công ty và các kỹ năng cơ bản trong công tyThời gian: 1 ngày Nội dung: Giới thiệu về công ty, cách tổ chức của công ty, được nghe người phụtrách giới thiệu về công ty, quá trình
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
BACKEND ENGINEER
Công ty thực tập: Elefos Người phụ trách: Mr Robert Thực tập sinh: Nguyễn Khánh
TP Hồ Chí Minh, tháng 1 năm 2024
Trang 2LỜI MỞ ĐẦU
Trong cuộc cách mạng công nghiệp 4.0, lĩnh vực thiết kế và xây dựng phầnmềm trở thành một phần quan trọng trong sự phát triển của xã hội, đặc biệt làtrong bối cảnh công nghệ thông tin ngày càng chiếm ưu thế Với hàng tỷ cáctrang web cũng như ứng dụng trên các thiết bị điện tử, nhu cầu xây dựngbackend để thực thi các chu trình trên ứng dụng là không thể phủ nhận
Chính vì vậy, quyết định trở thành một Backend Engineer là sự lựa chọn hợp lýcủa em để đối mặt với thách thức không ngừng của ngành công nghiệp phầnmềm Thông qua hành trình học tập tại đại học, em đã tích lũy được các kiếnthức về quy trình thiết kế hệ thống, xây dựng các service và tối ưu khả năng xử
lý của ứng dụng
Để chứng minh khả năng của mình trong môi trường thực tế, em quyết địnhtham gia vào Elefos – một nơi mang đến không chỉ sự chuyên nghiệp mà còn cơhội thực tập và áp dụng kiến thức vào các dự án thực tế Em tự hào trở thànhmột phần của đội ngũ phát triển phần mềm, hướng tới mục tiêu xây dựng những
hệ thống có chất lượng cao và được nhiều người sử dụng
2
Trang 3Em cũng chân thành cảm ơn sự hỗ trợ và sự chia sẻ của toàn bộ đội ngũ nhânviên tại Elefos Mỗi người trong em đều cảm thấy hạnh phúc và tự hào vì đượclàm việc trong một môi trường chuyên nghiệp, nơi mà sự sáng tạo và cam kếtđược đánh giá cao.
Cuối cùng, em không quên bày tỏ lòng biết ơn đến gia đình, bạn bè và nhữngngười thân yêu đã luôn ủng hộ và khuyến khích em trong suốt thời gian thựctập
Em tin rằng những kinh nghiệm và học thức từ thực tập này sẽ là nền tảng vữngchắc cho sự phát triển tương lai của em Một lần nữa, em xin chân thành cảm ơnsâu sắc
TP HCM, ngày 02 tháng 01 năm 2024
Khánh Nguyễn Khánh
Trang 4NHẬN XÉT CỦA KHOA
4
Trang 5
MỤC LỤC CHƯƠNG 1: GIỚI THIỆU CÔNG TY THỰC TẬP 7
1.1 Giới thiệu công ty Elefos 7
1.2 Sản phẩm công ty 7
1.3 Lịch làm việc khi thực tập tại công ty 8
CHƯƠNG 2: NỘI DUNG THỰC TẬP 10
2.1 Tìm hiểu công ty và các kỹ năng cơ bản trong công ty 10
2.2 Nghiên cứu kỹ thuật 10
2.2.1 Tuần 1 10
2.2.2 Tuần 2 11
2.2.3 Tuần 3 11
2.2.4 Tuần 4 11
2.2.5 Tuần 5 12
2.2.6 Tuần 6 12
2.2.7 Tuần 7 13
2.2.8 Tuần 8 13
2.2.9 Tuần 9 13
2.3 Tham gia dự án thực tế: Thiết kế cấu trúc client-server của Ghostr 14
2.3.1 Kỹ thuật áp dụng 14
2.3.2 Mô tả dự án 14
2.3.3 Quá trình thực hiện 17
2.3.4 Kết quả 18
2.3.5 Thuận lợi 18
2.3.6 Khó khăn 18
CHƯƠNG 3: TỔNG KẾT 20
3.1 Điểm mạnh 20
3.2 Điểm yếu 20
3.3 Chuẩn đạt được 20
Trang 7MỤC LỤC HÌNH ẢNH
Hình 1.1 Ví điện tử ChainVerse 8
Hình 1.2 Mạng lưới Screehavin 8
Hình 2.1 Một vài trang giao diện của ứng dụng Ghostr 15
Hình 2.2 Bảng tìm hiểu thông số các message broker 15
Hình 2.3 Diagram tổng quan của cấu trúc client-server 16
Hình 2.4 Diagram chi tiết của cấu trúc client-server 16
Hình 2.5 Một đoạn code để lấy Public Key và Instance ID từ certificate 16
Hình 2.5 Kết quả test hiệu năng của RabbitMQ 17
Trang 8CHƯƠNG 1: GIỚI THIỆU CÔNG TY THỰC TẬP
1.1 Giới thiệu công ty Elefos
Elefos được thành lập vào năm 2019, là một công ty thiết kế & xây dựng các hệthống cloud computing ứng dụng blockchain và peer-to-peer network
Elefos là một đơn vị độc đáo trong lĩnh vực công nghiệp, chuyên tâm và chuyênnghiệp về thiết kế và xây dựng hệ thống cloud computing tiên tiến Với sứ mệnhđịnh hình tương lai của công nghệ thông tin, công ty đã bắt đầu hành trình củamình vào năm 2019 và từ đó, Elefos đã không ngừng phát triển, tạo ra nhữnggiải pháp đột phá ứng dụng blockchain và mạng lưới peer-to-peer
Công ty tự hào với đội ngũ chuyên gia tài năng, giàu kinh nghiệm và đam mê,
đã và đang đưa ra những ý tưởng sáng tạo và đổi mới Elefos không chỉ tậptrung vào việc cung cấp giải pháp kỹ thuật tiên tiến mà còn chú trọng đến việcđáp ứng những thách thức và cơ hội kinh doanh cụ thể của môi trường Web 4.0hiện nay
● Địa chỉ công ty: Tầng 2, SOHUDE Tower, 331 đường Nguyễn TrọngTuyển, Quận Phú Nhuận, Thành phố Hồ Chí Minh, Việt Nam
● Quy mô công ty: 0-50 nhân viên
1.2 Sản phẩm công ty
Công ty có nhiều sản phẩm liên quan đến việc phát triển các hệ thống ngườidùng trong môi trường blockchain Một vài ứng dụng tiêu biểu của công tygồm:
● ChainVerse: ChainVerse là hệ thống ví điện tử cho ứng dụng di động
(Android & iOS) và web platform ChainVerse cung cấp một nền tảng tậptrung cho tất cả các tài khoản DeFi của bạn, cùng với các tính năng mua,
8
Trang 9bán và lưu trữ đa dạng các loại tiền điện tử như Bitcoin, Ethereum,LiteCoin một cách an toàn và tin cậy
Hình 1.1 Ví điện tử ChainVerse
● Screehavin: Screehavin là một mạng lưới giao dịch thiết kế theo hướng
staking-reward bao gồm các Collectible NFT và các token tiền tệ tên làSCREE Screehavin cung cấp một nền tảng cho phép định giá, giao dịchcũng như cung cấp các phúc lợi cho người dùng đóng góp vào hệ thống.Các token tiền tệ cũng như Collectible NFT của hệ thống cũng được tíchhợp vào ChainVerse nhằm đơn giản hoá quá trình giao dịch
việc trong ngày
Công việc hằng ngày bắt đầu từ lúc 9h đến 18h
Thời gian nghỉ
trưa
Thời gian nghỉ trưa 1 tiếng từ 11h30 tới 12h30
Thời gian báo
cáo
Sau mỗi ngày làm việc sẽ tổng hợp tiến độ làm việc kèm vớicác vấn đề mắc phải và báo cáo với người phụ trách
Trang 10Daily meeting Vào sáng hàng ngày sẽ họp 15 phút để báo cáo tiến độ công
việc ngày trước và lên kế hoạch cho ngày hôm đó
Sprint planning Bắt đầu vào mỗi chiều thứ 2 hàng tuần, team sẽ có 1 buổi
họp cùng nhau để phổ biến công việc sẽ cần làm
Weekly review Vào buổi sáng thứ 6 hàng tuần sẽ có buổi seminar về topic
đã được giao để tổng kết trao đổi những vấn đề gặp phải và xem lại những nhiệm vụ trong tuần
10
Trang 11CHƯƠ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
Thời gian: 1 ngày
Nội dung: Giới thiệu về công ty, cách tổ chức của công ty, được nghe người phụtrách giới thiệu về công ty, quá trình thành lập và phát triển, quy trình làm việc
và cấu trúc công ty Ngoài ra, thực tập sinh còn được giới thiệu về văn hóa làmviệc trong công ty như thời gian đi làm, các quy định, cách sử dụng email trongcông việc Làm quen với các đồng nghiệp và tham gia tiệc chào mừng của côngty
Kết quả: Hiểu thêm về công ty Elefos, quá trình thành lập và phát triển Cóthêm các kỹ năng về việc lập kế hoạch, có kỷ luật, có trách nhiệm
2.2 Nghiên cứu kỹ thuật
2.2.1 Tuần 1
Nội dung:
1 Giới thiệu về công ty, môi trường làm việc và chương trình internshiptraining
2 Thiết lập cài đặt máy tính, phần mềm cần thiết cho công việc
3 Sơ lược về sản phẩm Ghostr đang được phát triển của công ty và giaonhiệm vụ tìm hiểu sâu hơn về chức năng cho các thực tập sinh
4 Các thành viên tìm hiểu và trình bày theo về sản phẩm Ghostr theo phần
mà mình đã được giao
5 Họp báo cáo tuần
Kết quả: Hiểu về sản phẩm Ghostr, cách làm việc nhóm, hiểu được địnhhướng cho bản thân trong việc phát triển hệ thống
Trang 122.2.2 Tuần 2
Nội dung:
● Giới thiệu về quy trình phát triển của công ty & các quy trình làm việc
● Tổng quan về các thành phần của Ghostr
● Tìm hiểu về cấu trúc của Nostr relay
● Seminar về Golang và framework Gin / Echo
● Họp báo cáo tuần
Kết quả: Hiểu được tổng quan về phương pháp làm việc của công ty, cáccấu trúc chi tiết của Ghostr và nắm được kiến thức cơ bản về làm việc vớiGolang
2.2.3 Tuần 3
Nội dung:
● Tìm hiểu về cấu trúc của các Nostr server viết bằng Golang
● Vận hành thử một vài Nostr server đã tìm hiểu trên cloud
● Họp báo cáo tuần
Kết quả: Hiểu được cấu trúc của một Nostr server, cấu trúc của dữ liệugiao tiếp, cũng như phương thức vận hành của chúng
Trang 13● Họp báo cáo tuần
Kết quả: Xem xét được các ý tưởng về việc tối ưu giao tiếp client-servercủa Ghostr
2.2.5 Tuần 5
Nội dung:
● Thực hiện các bài benchmark để kiểm tra hiệu năng RabbitMQ dưới tảitrọng đề ra
● Thiết kế & chỉnh sửa diagram cấu trúc để áp dụng RabbitMQ vào Ghostr
● Lên ý tưởng về tích hợp Public Key và Address trong SSL certificate củakết nối
● Họp báo cáo tuần
Kết quả: Thiết kế được cấu trúc giao thức client-server mới của Ghostr,lên các ý tưởng tiếp theo để bảo mật cấu trúc
2.2.6 Tuần 6
Nội dung:
● Xác định các thuộc tính mới của SSL certificate trong hệ thống
● Cập nhật diagram cấu trúc RabbitMQ trong Ghostr để phù hợp vớicertificate mới
● Thử nghiệm RabbitMQ consumer và producer với cấu trúc đã thiết kế
● Họp báo cáo tuần
Kết quả: Thiết kế được phương thức xác thực người dùng bằng SSLcertificate, thử nghiệm cấu trúc mới
Trang 142.2.7 Tuần 7
Nội dung:
● Tìm hiểu sơ bộ về ngôn ngữ Erlang
● Tham khảo source code RabbitMQ phần trích xuất các dữ liệu từ SSLcertificate, cũng như cách build và chạy RabbitMQ từ source code
● Tìm cách trích xuất Public Key và Address ID từ custom SSL certificate
● Họp báo cáo tuần
Kết quả: Tìm được cách trích xuất dữ liệu trong RabbitMQ từ SSLcertificate mới
● Họp báo cáo tuần
Kết quả: Tích hợp thành công RabbitMQ với custom SSL certificate củaGhostr để sử dụng cho các tính năng của hệ thống
Trang 15Kết quả: Tổng kết quá trình thực tập và phân tích các công việc đã thựchiện
2.3 Tham gia dự án thực tế: Thiết kế cấu trúc client-server của Ghostr
2.3.1 Kỹ thuật áp dụng
● Thiết kế UML diagram: hỗ trợ việc thiết kế các Architecture Diagram
cho cấu trúc của RabbitMQ
● Lập trình với Golang và Erlang: sử dụng cho việc thiết kế backend
service, công cụ khởi tạo custom SSL certificate và chỉnh sửa source codecủa RabbitMQ
● Thiết kế SSL certificate với OpenSSL: dùng cho việc thêm các thuộc
tính đặc biệt vào SSL certificate
2.3.2 Mô tả dự án
Ghostr là một ứng dụng nhắn tin peer-to-peer tích hợp với các yếu tố blockchainnhư khả năng thực hiện giao dịch token ngay trong khung chat, khả năng tự vậnhành và thiết lập server tại máy chủ cá nhân
Dự án tập trung vào việc thiết kế giao thức client-server với yêu cầu gọn nhẹ và
người tham gia
án:
Trang 16Hình 2.1 Một vài trang giao diện của ứng dụng Ghostr
Hình 2.2 Bảng tìm hiểu thông số các message broker
Hình 2.3 Diagram tổng quan của cấu trúc client-server
16
Trang 17Hình 2.4 Diagram chi tiết của cấu trúc client-server
Hình 2.5 Một đoạn code để lấy Public Key và Instance ID từ certificate
2.3.3 Quá trình thực hiện
● Nắm rõ yêu cầu: Trước khi bắt đầu tìm hiểu và thực hiện các thay đổi
trên hệ thống, ta cần phải nắm rõ các nhu cầu của hệ thống cũng như cácyêu cầu được đặt ra, từ đó xác định được các thông số phù hợp
Đối với dự án, ta cần nắm được phương thức giao tiếp ban đầu củaGhostr qua HTTP polling, các message type có sẵn, cũng như yêu cầuhiệu năng của giao thức mới
Trang 18● Xác định các công việc phù hợp: Dựa trên yêu cầu, ta cần xác định các
công việc cần được thực hiện Mỗi công việc sẽ cần được xem xét trêncác khía cạnh chức năng và phi chức năng theo yêu cầu bên trên
Đối với dự án, em có ba yêu cầu chính cần xem xét:
- Nghiên cứu & tham khảo các giao thức protocol phù hợp để đảm
bảo truyền tải client-server cũng như cấu trúc xác thực qua PublicKey của người dùng (WebSocket, Nostr, AMQP, …) Dự án chọnRabbitMQ cùng thiết kế message type mới làm giao thức chính
- Thiết kế architecture diagram, data flow diagram khi áp dụng các
protocol vào hệ thống
- Thực hiện các bài test hiệu năng và demo chức năng cho các
protocol
Hình 2.5 Kết quả test hiệu năng của RabbitMQ
● Thiết kế các endpoint: Đảm bảo tối ưu đường truyền giữa các service, ở
đây cụ thể là giữa RabbitMQ và backend server đằng sau, cũng như đảmbảo SSL certificate hoạt động bình thường bên phía client
● Đánh giá và điều chỉnh: Hệ thống cần được đánh giá chức năng và hiệu
năng, cộng với điều chỉnh để đảm bảo tính hiệu quả và tính đầy đủ củatừng chức năng Điều này bao gồm việc cập nhật cấu trúc hoặc cập nhậtsource code khi có yêu cầu
18
Trang 192.3.4 Kết quả
Đảm bảo tính chính xác và đầy đủ của yêu cầu hệ thống, bao gồm kết nối gọnnhẹ hiệu năng cao, xác thực người dùng từ SSL certificate, đảm bảo chức năngngười dùng
2.3.5 Thuận lợi
● Đã có kinh nghiệm phát triển nhiều hình thức backend, làm việc vớiLinux server và SSL certificate
● Kỹ năng trình bày tốt, dễ hiểu ở các buổi họp
● Khả năng tìm hiểu kiến trúc mới nhanh và hiệu quả
2.3.6 Khó khăn
● Do lần đầu tiên tiếp xúc với Erlang và RabbitMQ nên vẫn còn nhiều thiếusót trong việc chỉnh sửa source code cũng như nắm vững cấu trúcmessage queue
● Chưa quen với template của công ty nên còn khó khăn trong việc trìnhbày document
● Còn một vài chỗ vẫn cần cải thiện như khả năng đọc tài liệu tiếng anhliên quan đến các khái niệm blockchain
Trang 20CHƯƠNG 3: TỔNG KẾT
Quãng thời gian thực tập tại Elefos đã giúp em cải thiện bản thân rất nhiều trongquy trình làm việc thực tế, tác phong của người kỹ sư phần mềm Được làm việctại đây, em đã học thêm được kỹ năng mềm sử dụng mail, quản lý ticket Trello,làm việc nhóm, giao tiếp với cấp trên, …
Chỉ trong thời gian hạn chế, em đã hoàn thành dự án cá nhân trong quá trìnhtraining với các tính năng, yêu cầu đặt ra ban đầu
Khi tham gia vào dự án thực tế, em cũng hoàn thành tốt các tác vụ đúng hạn vàđạt chất lượng tốt
3.1 Điểm mạnh
● Giao tiếp tốt với nhóm
● Hoàn thành tốt nhiệm vụ dưới tư cách 1 thành viên nhóm
● Tìm hiểu nhanh các đề tài khó mà mentor đề xuất
● Chủ động đưa ra các ý tưởng nhằm tối ưu hệ thống để đạt được nhữngđiểm cộng trong quá trình thực tập
Trang 21Goal Mục tiêu môn học
G1 Nắm bắt được xu hướng, nhu cầu xã hội và tính đặc thù của doanh
nghiệp
G2 Hiểu và giải thích được các khái niệm cơ bản, thuật ngữ và sơ đồ hệ
thống trong dự án
G3 Nắm được quy trình, phương pháp và công nghệ phát triển sản phẩm
phần mềm tại doanh nghiệp
G4 Có khả năng tìm hiểu vấn đề, mô hình hóa vấn đề và tham gia giải