tech

Table of Content

Introduction

Ada case dimana gue 2x refactoring codebase dimana gue dapet project dari PT.PAS (TMS) dan gue nemu 1 istilah yg menarik untuk gue bahas “Modular Architecture with Separation of Concerns by Role”.

Modular Architecture

  • Arsitektur perangkat lunak yang membagi aplikasi menjadi modul-modul kecil yang saling terpisah dan dapat digunakan kembali.
  • Setiap modul memiliki fungsi spesifik dan tanggung jawab sendiri.
  • Tujuan: scalability, maintainability, dan pengembangan tim yang lebih efisien.

Konsep Dasar

1. Modul

  • Bagian aplikasi yang memiliki fungsi spesifik.
  • Contoh: Modul User, Modul Product, Modul Order, dll.

2. Concern

  • Bagian kode yang bertanggung jawab atas aspek tertentu.
  • Contoh: Business Logic, Data Access, Presentation, Authentication, dll.

3. Role

  • Jenis pengguna dengan hak akses dan tanggung jawab berbeda.
  • Contoh: Admin, Customer, Manager, dll.
project/
├── app/
│   ├── Modules/
│   │   ├── User/
│   │   │   ├── Controllers/
│   │   │   │   ├── Api/
│   │   │   │   │   ├── Admin/
│   │   │   │   │   └── User/
│   │   │   │   └── Web/
│   │   │   │       ├── Admin/
│   │   │   │       └── User/
│   │   │   ├── Models/
│   │   │   └── Routes/
│   │   │       ├── api.php
│   │   │       └── web.php
│   │   ├── Product/
│   │   │   ├── Controllers/
│   │   │   │   ├── Api/
│   │   │   │   │   ├── Admin/
│   │   │   │   │   └── Guest/
│   │   │   │   └── Web/
│   │   │   │       ├── Admin/
│   │   │       └── Guest/
│   │   │   ├── Models/
│   │   │   └── Routes/
│   │   │       ├── api.php
│   │   │       └── web.php
│   │   └── Order/
│   │       ├── Controllers/
│   │       ├── Models/
│   │       └── Routes/
│   └── Core/
│       └── Models/
├── resources/
│   └── views/
│       └── modules/
│           ├── user/
│           │   ├── admin/
│           │   │   ├── index.blade.php
│           │   │   ├── create.blade.php
│           │   │   └── edit.blade.php
│           │   └── user/
│           │       ├── profile.blade.php
│           │       └── dashboard.blade.php
│           ├── product/
│           │   ├── admin/
│           │   │   ├── index.blade.php
│           │   │   └── create.blade.php
│           │   └── guest/
│           │       └── list.blade.php
│           └── order/
│               ├── admin/
│               │   └── index.blade.php
│               └── user/
│                   └── my-orders.blade.php
└── routes/
    ├── api.php
    └── web.php

Date: 06-10-2025