Từ những ngày đầu bướcchân vào môi trường thực tập, em đã được trải nghiệm cảm giác mãn nguyện khi đượcđắ immersion trong các dự án thực tế, những công nghệ mới nhất và khám phá nhữngkhí
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
INTERN BACKEND
Công ty thực tập: Atom Solution
Người phụ trách: Tai Tắt Sáng
Trang 2LỜI MỞ ĐẦU
Trong thế giới công nghệ ngày nay, việc lựa chọn một vị trí thực tập trong lĩnh vực backend và công nghệ web không chỉ đòi hỏi sự quyết đoán mà còn là một quyết định đầy tiềm năng và hứa hẹn Với sự phát triển không ngừng của internet và ứng dụng web, vai trò của backend đã trở nên cực kỳ quan trọng trong việc xây dựng những ứng dụng mạnh mẽ và đáng tin cậy
Trong báo cáo thực tập này, em muốn chia sẻ với các bạn về quyết định của em khi lựa chọn vị trí intern backend và hành trình thực tập của em Từ những ngày đầu bước chân vào môi trường thực tập, em đã được trải nghiệm cảm giác mãn nguyện khi được
đắ immersion trong các dự án thực tế, những công nghệ mới nhất và khám phá những khía cạnh thú vị của việc phát triển phần mềm
Việc làm việc với backend không chỉ đòi hỏi kiến thức sâu về ngôn ngữ lập trình mà còn yêu cầu khả năng tư duy logic và khả năng giải quyết vấn đề Trong suốt quá trình thực tập, em đã học được cách xây dựng và tối ưu hóa các hệ thống backend, từ việc thiết kế cơ sở dữ liệu cho đến triển khai và quản lý ứng dụng web Em đã được tham gia vào việc phát triển các tính năng mới, tối ưu hiệu suất và khắc phục các lỗi, đồng thời học cách làm việc nhóm và tương tác với các thành viên khác
Qua quá trình này, em đã nhận thấy sự quan trọng của việc kiên trì và sự cống hiến trong công việc Em đã trải qua những thử thách và khó khăn, nhưng đó cũng là những cơ hội để em tiến bộ và phát triển Sự hỗ trợ và sự chỉ dẫn từ các chuyên gia trong ngành đã giúp em nắm bắt được những nguyên tắc quan trọng và phương pháp làm việc hiệu quả
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 Atom Solution – một môi trường lý tưởng và chuyên nghiệp để thực hiện dự định
Với sự trưởng thành và những kiến thức mới mẻ, em tin rằng vị trí intern backend đã đóng vai trò quan trọng trong việc xây dựng nền tảng cho sự nghiệp công nghệ của
em Báo cáo thực tập này sẽ trình bày chi tiết về những gì em đã học được, những thành tựu đã đạt được và những kinh nghiệm quý giá trong quá trình thực tập
Trang 3LỜI CẢM ƠN
Em xin trân trọng gửi lời cảm ơn công ty Atom Solution đã 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 anh Tai Tắt Sáng, 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 các anh chị trong team Mango đã bỏ ra nhiều thời gian, công sức
để hướng dẫn, hướng dẫn, giúp đỡ em tận tình trong khi 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 01 tháng 01 năm 2023
Trần Trọng Hoàng
Trang 4NHẬN XÉT CỦA KHOA
Trang 5
MỤC LỤC
LỜI MỞ ĐẦU 2
LỜI CẢM ƠN 3
NHẬN XÉT CỦA KHOA 4
MỤC LỤC 5
CHƯƠNG 1: GIỚI THIỆU CÔNG TY THỰC TẬP 6
1.1 Giới thiệu về công ty Atom Solution 6
1.2 Sản phẩm công ty 6
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 Tìm hiểu công ty và các kỹ năng cơ bản trong công ty 8
2.2 Nghiên cứu kỹ thuật 8
2.2.1 Tuần 1 8
2.2.2 Tuần 2 8
2.3 Thực hiện dự án cá nhân 8
2.3.1 Công nghệ 9
2.3.2 Mô tả dự án 10
2.3.3 Kết quả: 12
2.4 Tham gia dự án thực tế 13
CHƯƠNG 3: TỔNG KẾT 16
3.1 Điểm mạnh 16
3.2 Điểm yếu 16
3.3 Chuẩn đạt được 16
TÀI LIỆU THAM KHẢO 18
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 Atom Solution
Hình 1.1 Logo công ty Atom Solution
Về tên gọi:
Tạo hình ảnh về sự tiên phong và sáng tạo: Tên gọi Atom Solution có thể tạo ra hình ảnh về việc công ty đang dẫn đầu trong lĩnh vực công nghệ và có khả năng giải quyết các vấn đề phức tạp Từ "Atom" có thể liên hệ đến việc tạo ra các giải pháp nhỏ gọn
và hiệu quả, trong khi "Solution" thể hiện cam kết của công ty trong việc cung cấp các giải pháp toàn diện cho khách hàng
Quy mô công ty:
51-200 nhân viên
1.2 Sản phẩm công ty
EDC Processor: Cung cấp một nền tảng thanh toán toàn diện cho khách hàng ATOM MDM giúp tương tác dễ dàng giữa thiết bị POS và Merchant/ Merchant Service Provider, còn ATOM Gateway có thể hỗ trợ kết nối giữa ATOMPOS và hệ thống ngân hàng
ATOM Gateway được xây dựng trên một mô hình liên kết với nhiều ngân hàng, ATOM TMS để quản lý và theo dõi giao dịch cũng như thông tin Merchant, thông tin liên quan đến cài đặt cá nhân cho mỗi Merchant , có thể chấp nhận tất cả các loại
Trang 7E-wallet (như Momo, VNpay ), loyalty E-wallet (như Urbox, Got it ) và BNPL (Buy Now, Pay Later - Mua Ngay, Thanh Toán Sau)
VAM - Virtual Account Management: Hệ thống VAM cung cấp các API, công cụ
quản lý và báo cáo toàn diện để phục vụ quản lý Virtual Account và giao dịch thông qua Virtual Account cho các bên liên quan
Thanh toán thương mại điện tử: ATOM đang hoạt động với 5 phương thức thanh
toán bao gồm: Tiền mặt, VietQR, Ví điện tử, Cross-line POS, Cross-line Card
1.3 Lịch làm việc khi thực tập tại công ty
Em tham gia làm việc tại công ty bắt đầu từ ngày 07/08/2023 tới 31/11/2023(3 tháng), các ngày làm việc trong tuần là từ thứ 2 đến thứ 5 Công việc hằng ngày bắt đầu từ lúc 8h30 đến 17h30 Thời gian nghỉ trưa khoảng 1 tiếng Sau mỗi ngày làm việc em sẽ báo cáo tiến độ công việc trong ngày, đặt câu hỏi và nhận chia sẻ, giải đáp từ anh hướng dẫn, đặt mục tiêu cho ngày làm việc tiếp theo Mỗi tuần sẽ họp tiến độ tuần 1 lần vào sáng thứ 4, mọi người sẽ cùng họp và bàn bạc về các vấn đề đã giải quyết, tồn đọng, bài học, giải pháp và mục tiêu cho tuần tiếp theo
Trang 8CHƯƠNG 2: NỘI DUNG THỰC TẬP
2.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 từ cao xuống thấp, cách thức tổ chức của công ty, các phòng ban về IT, HR, … Ngoài ra, thực tập sinh còn được giới thiệu về văn hóa làm việc trong công ty như thời gian đi làm, các quy định, cách sử dụng email trong công việc, cách trả lời gmail …
Kết quả: hiểu thêm về văn hoá công ty atom solution, quá trình thành lập và phát
triển Có thêm các kỹ năng về việc sử dụng email trong công việc, làm việc có kế hoạch, có kỷ luật, có trách nhiệm hơn
2.2 Nghiên cứu kỹ thuật
2.2.1 Tuần 1
Nội dung: : Tìm hiểu về các công cụ sẽ được sử dụng trong quá trình làm việc
Trong thời gian này, supervisor đã hướng dẫn thực tập sinh tìm hiểu về các công cụ sẽ giúp ích cho trong công việc sau này Một số phần mềm trong số đó như gitlab - sử dụng trong việc lưu trữ mã nguồn của dự án, python - là một ngôn ngữ lập trình mạnh mẽ, dễ học và dễ đọc, docker - một nền tảng mã nguồn mở được sử dụng
để xây dựng, postgres - một hệ quản trị cơ sở dữ liệu quan hệ mã nguồn mở và mạnh
mẽ, …
Thực hiện : Thực hành sử dụng các phần mềm đã nêu trên.
Kết quả: Lập trình sử dụng các công cụ, biết cách kết hợp các công cụ với nhau để
làm việc
2.2.2 Tuần 2
Nội dung: Tìm hiểu, làm quen với server và hệ thống
Trong thời gian này, supervisor đã hướng dẫn em cơ bản về cách deploy các service lên một server aws, cách check log, cách debug code, …, cùng với đó là kiến trúc microservice, đây là kiến trúc mà công ty áp dụng cho các sản phẩm của mỉnh
Kết quả: Hiểu rõ hơn về quy trình deploy một sản phẩm lên cloud, hiểu được cách
thức giao tiếp, lợi ích, cũng như cách áp dụng kiến trúc microservice
2.3 Thực hiện dự án cá nhân
Sau một khoảng nửa tháng được tranning và thực hành, em đã nắm được những kiến thức cơ bản về python, gitlab, docker, postgres Trong nửa tháng tiếp theo, trainer đã
Trang 9hướng đẫn em áp dụng những kiến thức đã học để thực hiện một dự án áp dụng
microservice bằng ngôn ngữ python, và deploy project lên server, chi tiết sẽ được mô
tả ở phần dưới
2.3.1 Công nghệ
Product bao gồm những công nghệ sau:
1 Python: Ngôn ngữ chính của dự án
2 FastAPI: một framework web Python hiệu suất cao và dễ sử dụng để xây dựng các API (Application Programming Interface) RESTful Nó được thiết kế để cung cấp tốc độ xử lý nhanh, hiệu suất cao và sự dễ dàng trong việc phát triển ứng dụng web
3 SQLAlchemy: một thư viện Python mạnh mẽ và linh hoạt giúp tương tác và làm việc với cơ sở dữ liệu quan hệ Nó cung cấp một cách tiếp cận ORM (Object-Relational Mapping) cho phép bạn làm việc với cơ sở dữ liệu bằng cách sử dụng đối tượng Python thay vì viết trực tiếp các truy vấn SQL
4 Postgres: Database được sử dụng trong project
5 Redis: hệ thống cơ sở dữ liệu mã nguồn mở và cấu trúc dữ liệu in-memory, được thiết kế để lưu trữ và truy xuất dữ liệu từ bộ nhớ chính, giúp tăng tốc độ truy vấn và xử lý, ở trong project này, redis được sử dụng để làm task queue cho worker ở service khác thực hiện task
6 Celery: Celery là một hệ thống phân tán và bất đồng bộ cho xử lý tác vụ (task processing) trong ứng dụng Python Nó cho phép bạn chia nhỏ các công việc phức tạp thành các tác vụ nhỏ hơn và thực hiện chúng một cách đồng thời và bất đồng bộ trên nhiều worker, trong project celery sẽ có nhiệm vụ send task lên redis queue
7 Alembic: là một công cụ quản lý phiên bản (version control) cho các cơ sở dữ liệu trong môi trường phát triển ứng dụng web Nó được sử dụng chủ yếu trong các dự án Python để quản lý và tự động hóa việc thay đổi cơ sở dữ liệu theo thời gian như: migration, đồng bộ hóa cơ sở dữ liệu, đảm bảo an toàn và phục hồi
Trang 109 Docker-compose: là một công cụ dùng để định nghĩa và quản lý các ứng dụng đa-container trong Docker Nó cho phép bạn xác định cấu hình của một ứng dụng, bao gồm các dịch vụ, mạng, và các thiết lập khác, trong một tệp tin YAML duy nhất
10 Postman: Postman là một ứng dụng phát triển API (Application Programming Interface) và kiểm thử API Nó cho phép các nhà phát triển tạo, gửi và nhận các yêu cầu HTTP và HTTPS, xem và quản lý các phản hồi từ máy chủ Postman cung cấp một giao diện người dùng đồ họa dễ sử dụng để tạo các yêu cầu API, xác minh và kiểm tra các phản hồi, và thực hiện các tác vụ liên quan đến phát triển và kiểm thử API
11 GitLab: Nơi lưu trữ source code của project
12 Server AWS: Nơi deploy project
2.3.2 Mô tả dự án
a) Giới thiệu về project:
Hệ thống tạo ticket là một ứng dụng cho phép người dùng gửi yêu cầu hoặc vấn
đề cụ thể và theo dõi trạng thái của chúng Nó lưu trữ thông tin ticket trong cơ
sở dữ liệu, cung cấp chức năng quản lý, gửi thông báo và tạo báo cáo Mục tiêu
là cung cấp một phương tiện thuận tiện để quản lý và giải quyết yêu cầu từ người dùng hoặc khách hàng Cụ thể hệ thống sẽ:
- Lưu trữ ticket: Thông tin về ticket được lưu trữ trong cơ sở dữ liệu mỗi khi
có form submit gửi từ phía khách hàng lên server Mỗi ticket được gán một
số duy nhất hoặc mã xác định để xác định và truy xuất dễ dàng
- Quản lý ticket: Hệ thống cung cấp các tính năng quản lý ticket để xử lý và theo dõi trạng thái của chúng Điều này có thể bao gồm chức năng như gán ticket cho người xử lý, thay đổi trạng thái ticket (như "mới", "đang xử lý",
"hoàn thành"), và ghi lại lịch sử xử lý
- Gửi thông báo: Hệ thống có thể gửi thông báo gmail tới các bên liên quan khi có ticket bị quá hạn thời gian chờ mà chưa được xử lý, cùng với đó sẽ gửi thông thông qua gmail cho khách hàng khi ticket ở trạng thái “hoàn thành”
Trang 11Hình 2.1 Sơ đồ hoạt động của chứ năng
b) Mô tả kiến trúc project
Project sẽ có 2 service, 1 server api và 1 worker, server api sẽ gửi task kèm data lên redis task queue, và woker sẽ có trách nhiệm lấy task đó và thực hiện nhiệm
vụ gửi mail của mình
Trang 12c) Source code project
2.3.3 Kết quả:
Đã hoàn thành được các tính năng trên và deploy vào một cloud server aws để thử nghiệm hệ thống, trừ việc có một giao diện để gửi form ticket, đây là service backend nên form-data thử nghiệm được gửi lên từ postman
Deploy service lên server.
Trang 13Email thông báo ticket quá hạn xử lý được gửi về
Em đã tham gia và đảm nhận một vài công việc trong một dự án thực tế trong khoảng thời gian 1 tháng, vì dự án có tính báo mật nên em xin phép được mô tả khái quát về dự án
Quá trình thực hiện:
Trong dự án em được phân công tích hợp thanh toán online trong môi trường card test với ngân hàng Sacombank (STB)
Chức năng thanh toán này được thiết kế theo kiến trúc microservice, với mỗi service đảm nhận một trách nhiệm khác nhau:
1 Service widget: Đây là service frontend để người dùng lựa chọn phương thức thanh toán và sau đó submit đơn hàng cần thanh toán
2 Service checkout: Đây là service để lấy phương thức thanh toán từ database trả
về cho frondend
3 Service signature: Đây là service để tạo ra signature cho đơn hàng, lưu đơn hàng vào database với secret key được STB cung cấp, nếu đúng thì sẽ tạo ra được một url trả về cho client
4 Service callback: Cập nhật thông tin đơn hàng trong database, trạng thái đơn
Trang 14Source code dự án
Các service được deploy trên server AWS.
Về cơ bản các service này phục vụ cho mục đích thanh toán, lưu trữ thông đơn hàng được thanh toán bằng hệ thống thanh toán của STB
Trang 15Thuận lợi:
Được trainer hướng dẫn tận tình, được tiếp xúc với những tài nguyên công nghệ mới,
bổ sung được rất nhiều kỹ năng, kiến thức cả về chuyên môn lẫn trong làm việc nhóm
Khó khăn:
Vì lần đầu tham gia vào dự án thực tế nên bản thân em không tránh khỏi những sai lầm như: code không clean, phải làm quen với những công nghệ, kiến thức mới trong khoảng thời gian hữu hạn
Trang 16CHƯƠNG 3: TỔNG KẾT
Quãng thời gian thực tập tại Atom Solution đã 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 của người kỹ sư phần mềm Được làm việc tại đây, em đã học thêm được kỹ năng mềm sử dụng mail, quản lý ticket, 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ình training 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
- Kiến thức vững vàng về ngôn ngữ lập trình: Em đã có kiến thức về ngôn ngữ lập trình backend như Python, hoặc Node.js Điều này giúp em dễ dàng hiểu
và triển khai các tính năng phức tạp trong dự án
- Kỹ năng phân tích và thiết kế hệ thống: Em có khả năng phân tích yêu cầu, xác định các thành phần chính và thiết kế hệ thống chặt chẽ Em có thể xác định cách tốt nhất để triển khai các tính năng mới mà không làm ảnh hưởng đến hệ thống hiện có
- Kinh nghiệm với cơ sở dữ liệu: Em đã có kinh nghiệm làm việc với các hệ quản trị cơ sở dữ liệu như PostgreSQL, MongoDB, Redis
- Kỹ năng tư duy logic và giải quyết vấn đề: Em có khả năng phân tích vấn đề một cách logic và tìm ra giải pháp hiệu quả Em có thể tìm ra lỗi và sửa chúng một cách nhanh chóng trong quá trình phát triển và kiểm thử
3.2 Điểm yếu
- Kinh nghiệm thực tế hạn chế: Em còn là sinh viên và chưa có kinh nghiệm làm việc thực tế trong lĩnh vực backend Điều này có thể khiến em gặp khó khăn trong việc áp dụng kiến thức vào công việc thực tế
- Thiếu kỹ năng làm việc nhóm: Do ít kinh nghiệm thực tế, em có thể gặp khó khăn trong việc làm việc nhóm và tương tác với các thành viên khác trong dự
án Tuy nhiên, em đang nỗ lực để cải thiện kỹ năng này
- Khả năng quản lý thời gian: Trong quá trình thực tập, em có thể gặp khó khăn trong việc quản lý thời gian và ưu tiên công việc Tuy nhiên, em đã nhận ra điều này và đang học cách tổ chức công việc một cách hiệu quả
3.3 Chuẩn đạt được
Goal Mục tiêu môn học
G1 Nắm bắt được xu hướng, tính đặc thù của công việc cũng như của doanh