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 (1.27 MB, 18 trang )
<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">
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ựcbackend và cơng nghệ web khơng chỉ địi hỏi sự quyết đố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ụngweb, vai trò của backend đã trở nên cực kỳ quan trọng trong việc xây dựng những ứngdụ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 khilự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ướ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í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 u cầu khả năng tư duy logic và khả năng giải quyết vấn đề. Trong suốt quá trìnhthự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ệcthiết kế cơ sở dữ liệu cho đến triển khai và quản lý ứng dụng web. Em đã được thamgia 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, đồngthờ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ếntrong 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 giatrong ngành đã giúp em nắm bắt được những nguyên tắc quan trọng và phương pháplà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ếnthức đã học và có được trải nghiệm trong mơi trường thực tế, em đã quyết định thamgia 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ủaem. 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ữngthành tựu đã đạt được và những kinh nghiệm quý giá trong quá trình thực tập.
</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">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ìnhcủa anh Tai Tắt Sáng, em đã tiếp thu những kiến thức quan trọng để có thể tham giamộ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ớicũ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ảnphẩ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
</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="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
</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6"><b>1.1. Giới thiệu về cơng ty Atom Solution</b>
<i>Hình 1.1. Logo cơng ty Atom Solution</i>
<b>Về tên gọi: </b>
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ácgiải pháp tồn diện cho khách hàng.
<b>Quy mô công ty: </b>
51-200 nhân viên
<b>1.2. Sản phẩm công ty</b>
<b>EDC Processor</b>: Cung cấp một nền tảng thanh tốn tồn diện cho khách hàng. ATOMMDM 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 E-
</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">wallet (như Momo, VNpay...), loyalty wallet (như Urbox, Got it...) và BNPL (Buy Now, Pay Later - Mua Ngay, Thanh Toán Sau).
<b>VAM - Virtual Account Management: Hệ thống VAM cung cấp các API, công cụ </b>
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.
<b>Thanh toán thương mại điện tử: ATOM đang hoạt động với 5 phương thức thanh </b>
toán bao gồm: Tiền mặt, VietQR, Ví điện tử, Cross-line POS, Cross-line Card.
<b>1.3. Lịch làm việc khi thực tập tại công ty</b>
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úc8h30 đế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ừ anhhướ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 1lầ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.
</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8"><b>2.1. 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 </b>
<b>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</b>
giới thiệu về cơng ty, q trình thành lập và phát triển, quy trình làm việc từ caoxuống thấp, cách thức tổ chức của cơng ty, các phịng ban về IT, HR, … Ngồ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 đilàm, các quy định, cách sử dụng email trong công việc, cách trả lời gmail …
<b>Kết quả: hiểu thêm về văn hố cơng ty atom solution, q trình thành lập và phát</b>
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.
<b>2.2. Nghiên cứu kỹ thuật2.2.1. Tuần 1</b>
<i><b>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</b></i>
Trong thời gian này, supervisor đã hướng dẫn thực tập sinh tìm hiểu về cáccơ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ậptrì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ạnhmẽ, …
<b>Thực hiện : Thực hành sử dụng các phần mềm đã nêu trên.</b>
<b>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 để</b>
làm việc
<b>2.2.2. Tuần 2</b>
<b>Nội dung: Tìm hiểu, làm quen với server và hệ thống</b>
Trong thời gian này, supervisor đã hướng dẫn em cơ bản về cách deploy cácservice lên một server aws, cách check log, cách debug code, …, cùng với đó là kiếntrú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
<b>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</b>
thức giao tiếp, lợi ích, cũng như cách áp dụng kiến trúc microservice
<b>2.3. Thực hiện dự án cá nhân</b>
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 đã
</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">hướ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.
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ằngcá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 queuecho 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ụ (taskprocessing) trong ứng dụng Python. Nó cho phép bạn chia nhỏ các cơng việcphứ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 tasklê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 trongcác dự án Python để quản lý và tự động hóa việc thay đổi cơ sở dữ liệu theothời gian như: migration, đồng bộ hóa cơ sở dữ liệu, đảm bảo an toàn và phụchồi
</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">9. 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 ứngdụ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 tinYAML duy nhất.
10. Postman: Postman là một ứng dụng phát triển API (Application ProgrammingInterface) và kiểm thử API. Nó cho phép các nhà phát triển tạo, gửi và nhậncá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êucầ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 project12. Server AWS: Nơi deploy project.
<b>2.3.2. Mô tả dự án</b>
<b>a) Giới thiệu về project: </b>
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êulà 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 “hồn thành”
</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11"><i>Hình 2.1. Sơ đồ hoạt động của chứ năng</i>
<b>b) Mô tả kiến trúc project</b>
Project sẽ có 2 service, 1 server api và 1 worker, server api sẽ gửi task kèm datalên redis task queue, và woker sẽ có trách nhiệm lấy task đó và thực hiện nhiệmvụ gửi mail của mình
</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12"><b>c) Source code project</b>
<b>2.3.3. Kết quả: </b>
Đã 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.
<i>Deploy service lên server.</i>
</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13"><i>Email thông báo ticket quá hạn xử lý được gửi về</i>
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.
4. Service callback: Cập nhật thông tin đơn hàng trong database, trạng thái đơn
</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14"><i>Source code dự án</i>
<i>Các service được deploy trên server AWS.</i>
Về cơ bản các service này phục vụ cho mục đích thanh tốn, lưu trữ thơng đơn hàng được thanh toán bằng hệ thống thanh toán của STB
</div><span class="text_page_counter">Trang 16</span><div class="page_container" data-page="16">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ềutrong 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ệctại đây, em đã học thêm được kỹ năng mềm sử dụng mail, quản lý ticket, làm việcnhó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 trainingvớ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à đạtchất lượng tốt.
<b>3.1. Điểm mạnh</b>
- 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ử.
<b>3.2. Điểm yếu</b>
- 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ả.
<b>3.3. Chuẩn đạt được</b>
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
</div><span class="text_page_counter">Trang 18</span><div class="page_container" data-page="18">