Tải bản đầy đủ (.pdf) (15 trang)

Báo cáo thực tập phát triển hệ thống kho sử dụng golang

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 (491.55 KB, 15 trang )

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
ĐẠ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 HỆ THỐNG KHO SỬ DỤNG
GOLANG

Công ty thực tập:
Lớp:

Công ty CP Công nghệ TEKO Việt Nam
SE501.N11

Thực tập sinh:

Vũ Ngọc Thạch - 19520266

TP. Hồ Chí Minh, ngày 24 tháng 12 năm 2022


Phát triển hệ thống Kho sử dụng Golang

Vũ Ngọc Thạch

LỜI NÓI ĐẦU

Ngày nay, với sự phát triển của mạng xã hội và nhu cầu càng cao về sự tự động hoá.
Các loại giao dịch, mua bán hàng hoá dần chuyển sang hình thức online, khách hàng có thể
đặt mua trên trang web thay vì đi tới tận cửa hàng để mua hàng. Chính vì thế nhiều cơng


ty, cửa hàng lớn nhỏ đều mở riêng cho mình 1 trang web (VD phongvu.com.vn,
bachhoaxanh.com,…) hoặc sử dụng chung 1 sàn giao dịch (như tiki.com, shoppee.vn,…).
Các trang web này có thể tận dụng nguồn hàng từ nhiều nơi như các chi nhánh nhỏ để
chuyển hàng qua lại thuận tiện cho việc giao dịch, đưa hàng đến tay khách hàng 1 cách
nhanh nhất.
Kèm theo sự phát triển của các mối giao dịch, các dịch vụ trực tuyến đi kèm cũng
ngày càng phát triển hơn. Yêu cầu cao về sự chuyên nghiệp, tốc độ để có thể đáp ứng đầy
đủ các yêu cầu của khách hàng.
Sau ba năm học tập trên trường, cùng với mong muốn bổ sung, củng cố những kiến
thức mà mình đã học được, em có dự định học tập trong kỳ. Em chọn Công ty TEKO Việt
Nam, một môi trường hiện tại, chuyên nghiệp làm nơi thực tập của bản thân mình.

1


Phát triển hệ thống Kho sử dụng Golang

Vũ Ngọc Thạch

LỜI CẢM ƠN
Em xin chân thành cảm ơn ban giám hiệu và quý thầy cô trường Đại học Công nghệ
Thông tin TP.HCM nói chung, và thầy cơ trong khoa Cơng nghệ Phần mềm nói riêng đã
tạo điều kiện cho em có cơ hội học tập và trải nghiệm.
Đồng thời, em xin gửi lời cảm ơn đến quý Công Ty cổ phần Công nghệ TEKO Việt
Nam đã tạo điều kiện cho em thực tập ở công ty, giúp em củng cố kiến thức bản thân và
hiểu hơn về môi trường làm việc ở một cơng ty Phần mềm. Tại đây em có thể trải nghiệm
được môi trường hiện đại, kinh nghiệm, tác phong mà người lập trình viên nên biết. Em có
thể hiểu thêm nhiều thứ về kiến thức nghiệp vụ, cách giao tiếp với mọi người. Em xin chân
thành cảm ơn.
Do kiến thức bản còn nhiều hạn chế và cũng là lần đầu được va chạm với thực tế

nên có thể báo cáo cịn nhiều thiếu sót. Mong q thầy (cơ) có thể đóng góp ý kiến để giúp
em có thể hoàn thiện hơn nữa.
Em xin chân thành cảm ơn.

Vũ Ngọc Thạch
TP. Hồ Chí Minh, ngày 24 tháng 12 năm 2022

2


Phát triển hệ thống Kho sử dụng Golang

Vũ Ngọc Thạch

NHẬN XÉT CỦA KHOA

...............................................................................................................................................
...............................................................................................................................................
...............................................................................................................................................
...............................................................................................................................................
...............................................................................................................................................
...............................................................................................................................................
...............................................................................................................................................
...............................................................................................................................................
...............................................................................................................................................
...............................................................................................................................................
...............................................................................................................................................
...............................................................................................................................................
...............................................................................................................................................
...............................................................................................................................................

...............................................................................................................................................
...............................................................................................................................................
...............................................................................................................................................
...............................................................................................................................................
...............................................................................................................................................

3


Phát triển hệ thống Kho sử dụng Golang

Vũ Ngọc Thạch

MỤC LỤC
CHƯƠNG 1: GIỚI THIỆU CÔNG TY THỰC TẬP .......................................................... 5
1. Giới thiệu công ty TEKO ............................................................................................. 5
2. Sản phẩm công ty ......................................................................................................... 5
CHƯƠNG 2: NỘI DUNG THỰC TẬP .............................................................................. 6
1. Tìm hiểu cơng ty và các kỹ năng cơ bản trong công ty ............................................... 6
2. Nghiên cứu kỹ thuật ..................................................................................................... 6
2.1 Quy trình phát triển phần mềm .............................................................................. 6
2.2 Cơng cụ làm việc .................................................................................................... 7
2.3 Kiến thức cần thiết cho lập trình ............................................................................ 7
2.4 Hệ thống kiến trúc phần mềm ................................................................................ 8
3. Tham gia dự án ............................................................................................................ 9
4. Lịch làm việc................................................................................................................ 9
CHƯƠNG 3: CHI TIẾT VỀ DỰ ÁN ................................................................................ 11
1. Giới thiệu ................................................................................................................... 11
2. Thực hiện ................................................................................................................... 11
3. Kế hoạch .................................................................................................................... 11

CHƯƠNG 4: KẾT QUẢ ĐẠT ĐƯỢC ............................................................................. 13
1. Kiến thức đạt được ..................................................................................................... 13
2. Điểm yếu của bản thân............................................................................................... 13
3. Cảm nhận về công ty ................................................................................................. 13
DANH MỤC TÀI LIỆU THAM KHẢO .......................................................................... 14

4


Phát triển hệ thống Kho sử dụng Golang

Vũ Ngọc Thạch

CHƯƠNG 1: GIỚI THIỆU CƠNG TY THỰC TẬP
1. Giới thiệu cơng ty TEKO
- Tên công ty: Công ty Cổ phần Công nghệ TEKO Việt Nam.
- Lĩnh vực: Cung cấp nền tảng đám mây nhằm thúc đẩy năng lực chuyển đổi số của
các doanh nghiệp phân khúc bán lẻ.
- Địa chỉ: Tầng 8, 9 Toà nhà Minh Long, 17 Bà Huyện Thanh Quan, Phường 6,
Quận 3, TP Hồ Chí Minh.
- Trang web:

Công ty Cổ phần Công nghệ TEKO Việt Nam được thành lập vào ngày 13/01/2017,
là một thành viên của tập đoàn VNLife. Teko cung cấp các dịch vụ phần mềm (SaaS) nền
tảng đám mây thúc đẩy các doanh nghiệp phân khúc bán lẻ.
Năm 2019, tập đoàn VNLife được Google, Temasek, Bain & Company công nhận
là kỳ lân công nghệ thứ 2 tại Việt Nam.
Cơng ty hiện tại có chi nhánh ở 3 nơi: Hà Nội, Đà Nẵng và thành phố Hồ Chí Minh.
2. Sản phẩm cơng ty
Cơng ty Teko thiết kế hệ thống ứng dụng hỗ trợ cho việc mua bán lẻ. Một sản phẩm

lớn của công ty là sử dụng Omni-Channel - bán hàng đa kênh, cung cấp các tính năng nổi
bật như quản lý hàng (nhập xuất kho), đặt hàng, giải quyết các bài toán liên quan tới bán
lẻ của một chuỗi các công ty.
Hiện tại công ty đang cung cấp dịch vụ hỗ trợ cho một số doanh nghiệp trong nước
như: Ví VNPay, Phong Vũ, Maxtrust, Sói biển,…

5


Phát triển hệ thống Kho sử dụng Golang

Vũ Ngọc Thạch

CHƯƠNG 2: NỘI DUNG THỰC TẬP
Đợt thực tập kéo dài 3 tháng, nhằm mục đích giúp sinh viên được đào tạo toàn diện
về nghiên cứu nghiệp vụ, kỹ năng coding cũng như giải quyết vấn đề khi gặp bài tốn. Tại
cơng ty, sinh viên có cơ hội học tập kỹ hơn về quy trình làm việc, phát triển kỹ năng mềm,
làm việc trong một mơi trường chun nghiệp, hiện đại.
1. Tìm hiểu công ty và các kỹ năng cơ bản trong công ty
Thời gian: 2 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 chung về công ty, môi trường, lối làm việc, các nghiên tắc. Cung cấp và hướng dẫn
sử dụng tài khoản nội bộ trong cơng ty.
- Tìm hiểu, làm quen với nhóm: Được giới thiệu về quy trình làm việc của nhóm
riêng, giới thiệu vai trị của từng người và quy trình làm việc riêng trong nhóm.
Kết quả: Hiểu hơn rõ về công ty, về dự án riêng của cả nhóm. Biết cách sử dụng các
tài khoản nội bộ công ty, làm quen với các thành viên trong nhóm.
2. Nghiên cứu kỹ thuật
2.1 Quy trình phát triển phần mềm

Thời gian: 1 ngày
Nội dung: Tìm hiểu về quy trình phát triển của team, giới thiệu về flow làm việc,
các trao đổi thơng tin.
Kết quả: Hiểu rõ được quy trình của nhóm sử dụng là Agile Scrum, 1 số thơng tin
cơ bản như:
- Daily Meeting: hàng ngày, mỗi buổi sáng cả nhóm sẽ họp với nhau, báo cáo những
gì mình đã làm được trong hơm qua, và những gì mình sẽ làm trong hơm nay, bên cạnh đó
nêu lên những khó khăn mình gặp phải để tìm được giải pháp tối ưu nhất từ các thành viên
khác.
- Sprint: mỗi sprint tương ứng với thời gian 1 tuần, nhóm sẽ định ra những hạng
mục chính trong 1 tuần đó mà tất cả các thành viên phải hồn thành (có thể là 1 tính năng
bao gồm nhiều task khác nhau), ở cuối mỗi sprint team sẽ họp lại và phân tích những gì
mình làm được và thơng tin về sprint mới.
6


Phát triển hệ thống Kho sử dụng Golang

Vũ Ngọc Thạch

- Epic: một epic có thể kéo dài nhiều sprint, là các phần cơng việc liên quan tới
nhiều nhóm khác nhau, sau khi hồn thành EPIC thì release tính năng cho khách hàng.

2.2 Công cụ làm việc
Thời gian: 2 ngày
Nội dung: Tìm hiểu về các cơng cụ mà cơng ty sử dụng để trao đổi với nhau.
Kết quả: Hiểu được và biết cách sử dụng các công cụ như:
- Gitlab: nơi chứa code của cơng ty, biết được quy trình Merge code, deploy tính
năng từ mơi trường Dev lên Production.
- Slack: nơi trao đổi, bàn công việc của công ty, ghi lại lịch sử cuộc trị chuyện phân

tích nghiệp vụ, chốt tính năng.
- Confluence/Jira: Nơi giao task, xem sprint, tiến độ cơng việc, hoặc chia sẻ về các
kỹ năng, quy trình chung cho tồn bộ cơng ty.
- Google Meet: Gặp gỡ và họp trong công ty/ gặp gỡ khách hàng, hoặc là nơi chia
sẻ về kiến thức coding hàng tuần cho tồn bộ cơng ty.
2.3 Kiến thức cần thiết cho lập trình
Thời gian: 30 ngày
Nội dung: Tìm hiểu và hiểu hết được những library, code, tools sử dụng trong lập
trình.
7


Phát triển hệ thống Kho sử dụng Golang

Vũ Ngọc Thạch

Kết quả: biết được quy trình khi lập trình, làm quen, hiểu rõ về ngôn ngữ cũng như
tool sử dụng:
- Golang: là ngơn ngữ lập trình được sử dụng trong dự án của cả nhóm.

- PostgreSQL: cơ sở dữ liệu chính được sử dụng trong hệ thống, bên cạnh đó cịn
có các cơ sở dữ liệu khác như MySql, MongoDB,…
- Google Protobuf: thay thế cho HTTP RestAPI, Google Protobuf giúp giảm thời
gian decode khi di chuyển giữa những tầng khác nhau hoặc giữa những service.
- Git: cách thức lưu trữ code, commit và push, cũng như review code.
- Docker: cách build hệ thống máy ảo, chạy trên nhiều nền tảng và môi trường.
- 1 số trang web riêng của công ty: sử dụng để Monitor hệ thống, logging, truy vấn
Database (sử dụng Redash),…
2.4 Hệ thống kiến trúc phần mềm
Thời gian: 2 ngày

Nội dung: Tìm hiểu và hiểu về kiến trúc cho hệ thống công ty
Kết quả: biết được kiến trúc phần mềm của công ty:
- Microservice: công ty sử dụng microservice để chia nhỏ thành nhiều team, mỗi
team quản lý 1 services riêng, sử dụng ngơn ngữ lập trình, cơ sở dữ liệu khác nhau. Tác
dụng: tránh dependency giữa các tính năng, nếu có bị sập 1 service thì những service khác
vẫn chạy bình thường.
- Monorepo: cách tổ chức code, tồn bộ service code trong công ty nằm chung 1
repo, trong repo này sẽ chia nhỏ thành nhiều repo nhỏ hơn, tương ứng với từng service.
Tác dụng: giúp thống nhất code style, library giữa các service, việc thêm mới tính năng,
nâng cấp version sẽ dễ dàng hơn, đồng thời có thể tham khảo code của những service khác.
8


Phát triển hệ thống Kho sử dụng Golang

Vũ Ngọc Thạch

- Kubernetes: tận dụng tốt khả năng của các container, giúp các service chạy riêng
lẻ có thể kết hợp với nhau 1 cách dễ dàng.
- Kafka/MessageMQ: push và consume event giữa những service dễ dàng, các
service sẽ lắng nghe sự kiện và thực hiện hành động của bản thân dễ dàng.
3. Tham gia dự án
Sau khi được training kỹ về các kỹ năng cần phải có trong cơng ty, thực tập sinh
được tham gia vào dự án của nhóm, làm những tính năng cơ bản, từ từ nâng cao kỹ năng
lên. Chi tiết về dự án được chia sẻ ở phần sau.
4. Lịch làm việc
Tuần

1


Người
hướng
dẫn

Cơng việc

- Tìm hiểu về cơng ty, cách tổ chức
trong cơng ty.
Đồn Minh
- Làm quen với cơng cụ, cách làm Hữu
việc trong cơng ty.

2

- Tìm hiểu kiến thức lập trình:
Golang, PostgreSQL, Protobuf, Git. Đồn Minh
- Thực hành làm 1 project cơ bản Hữu
Todo sử dụng kiến thức ở trên.
- Đọc, hiểu về quy trình phát triển
trong cơng ty.

3

3

- Hiểu flow code cơ bản của nhóm: Đồn Minh
approve task => find solution => Hữu
coding => testing local => merge
code => deploy to web => testing in
web => release to customer.

- Setup máy tính phù hợp với mơi
Đồn Minh
trường code: cài đặt Ubuntu, Goland,
Hữu
PgAdmin,…

9

Mức độ
hoàn
thành

Nhận xét của
người hướng
dẫn


Phát triển hệ thống Kho sử dụng Golang

Vũ Ngọc Thạch

- Tìm hiểu Kubernetes, VPN, Docker
để chạy code trên máy tính cá nhân.
- Tìm hiểu về kiến trúc phần mềm, cơ
sở dữ liệu của nhóm.
4

- Tham khảo style code.

Đồn Minh

Hữu

- Đọc hiểu 1 số API đơn giản.

5

- Tham gia vào quy trình của 1 EPIC:
design business => design UI => Đồn Minh
design API => coding => testing => Hữu
release.

6

- Viết Unittest cải thiện coverage cho
Đồn Minh
dự án của cả nhóm tăng từ 60% lên
Hữu
72%.

7

- Kiểm tra quy trình quản lý kho trên
Đồn Minh
trang web của cơng ty: - Hiểu về cách
Hữu
deploy code lên trang web.

8

- Tham gia dự án: cải thiện tính năng Đồn Minh

in phiếu PDF.
Hữu

9

- Tham gia dự án: implement Kafka Đồn Minh
vào dự án của nhóm.
Hữu

10

- Tham gia dự án: implement tính Đồn Minh
năng kiểm tra giao dịch kho nhóm.
Hữu

10


Phát triển hệ thống Kho sử dụng Golang

Vũ Ngọc Thạch

CHƯƠNG 3: CHI TIẾT VỀ DỰ ÁN
1. Giới thiệu
Tên: Warehouse Service.
Mục tiêu: quản lý giao dịch, kiểm kê kho hàng hoá cho cách doanh nghiệp bán lẻ.
Giới thiệu: Đối với các doanh nghiệp bán lẻ, nhu cầu cần có 1 bên thứ 3 giải quyết
vấn đề về quản lý kho như quản lý nhập xuất cho sản phẩm, tạo báo cáo về số lượng tồn,
cũng như cung cấp 1 số tính năng thuận lợi cho việc mua hàng dễ dàng hơn. Chính vì thế
nhóm được thành lập với mục tiêu cung cấp API nhằm quản lý giao dịch hàng hoá trong

kho 1 cách dễ dàng, đồng thời có khả năng đồng bộ với các service khác trong tồn cơng
ty.
1 số tính năng cơ bản mà service cung cấp:
- Xuất nhập kho: cho phép nhập hàng, xuất hàng, hoặc nhận hàng trả lại từ khách
hàng,...
- Luân chuyển hàng trong kho: di chuyển hàng từ nơi này sang nơi khác trong kho,
thực hiện kiểm tra chất lượng sản phẩm, hoặc di chuyển hàng tới nơi khác trong hệ thống
chuỗi cửa hàng.
- In phiếu báo cáo hàng tháng: tạo phiếu báo cáo theo excel, pdf về chi tiết xuất nhập
kho, hoặc thông tin về hàng.
- Theo dõi thông tin tồn kho: cho phép kiểm tra số lượng 1 cách nhanh chóng, hoạt
động liên quan tới việc xuất/nhập hàng.
- Scan mã vạch: Thực hiện quét mã vạch của sản phẩm, từ đó lưu trữ hàng trong kho
dễ dàng hơn.
2. Thực hiện
Người thực hiện: Vũ Ngọc Thạch
Người hướng dẫn: Đoàn Minh Hữu
Cùng 1 số thành viên trong nhóm Warehouse Service.
3. Kế hoạch
- Các thành viên nhóm được chia ra 2 hướng chính:
+ Cải thiện, chuyển đổi các tính năng từ Odoo sang Tekone (dự án của công ty sử
dụng Golang).
11


Phát triển hệ thống Kho sử dụng Golang

Vũ Ngọc Thạch

+ Thêm 1 số tính năng mới cho dự án Tekone.

Trong khoảng thời gian thực tập, em được giao 1 thực hiện 1 số tính năng:
- Cải thiện khả năng in phiếu PDF: xem lại cách tổ chức code, giảm thời gian khi
tạo phiếu và thêm 1 số template cho nhiều doanh nghiệp khác nhau.
- Implement Kafka cho warehouse service: Kết nối Kafka trong hệ thống warehouse
với Kafka của từng môi trường Dev, Production, thực hiện lắng nghe từ 1 service khác.
- Tham gia vào Epic “Xem quá trình giao dịch kho”: cho phép người dùng có thể
xem lại những thao tác đã thực hiện trong kho như nhập, xuất, điều chỉnh tồn,…
Kết quả:
- Hoàn thành tốt các task được giao ở phía trên.
- Hiểu thêm kiến thức về Golang, Protobuf, Kafka.
- Hiểu được kiến trúc Database của dự án.
- Hiểu hơn về luồng quy trình bên trong kho.
- Có thể đọc hiểu tài liệu được viết sẵn, từ đó áp dụng code vào thành công.
- Làm quen được với quy trình của nhóm, của cơng ty.

12


Phát triển hệ thống Kho sử dụng Golang

Vũ Ngọc Thạch

CHƯƠNG 4: KẾT QUẢ ĐẠT ĐƯỢC
1. Kiến thức đạt được
- Trải nghiệm được quy trình phát triển phần mềm Agile Scrum.
- Trau dồi kiến thức nhiều hơn về back-end.
- Nâng cao kỹ năng coding, cách giải quyết vấn đề bài toán đặt ra.
- Nâng cao khả năng đọc hiểu văn bản bằng Tiếng Anh, khả năng research.
- Biết được cách làm việc trong môi trường công ty
2. Điểm yếu của bản thân

- Bản thân cần trau dồi nhiều hơn về kiến thức chuyên môn, nghiệp vụ.
- Cần cải thiện khả năng coding, tốc độ code.
3. Cảm nhận về công ty
- Cơ sở vật chất tốt, phòng rộng rãi (tất cả nhân viên cơng ty ngồi làm việc ở văn
phịng chính lớn).
- Phúc lợi dành cho nhân viên tốt.
- Thời gian làm việc thoáng (bắt đầu từ 9h).
- Các thành viên trong nhóm nhiệt tình, tận tâm, hồ đồng với cá nhân em.

13


Phát triển hệ thống Kho sử dụng Golang

Vũ Ngọc Thạch

DANH MỤC TÀI LIỆU THAM KHẢO
1. Kinh nghiệm bản thân: Teko Company | Notion
2. />3. />4. />5. />6. />7. />8. />
14



×