Software Architecture

Hema Mitta Kalyani
LEARNFAZZ
Published in
3 min readMay 1, 2019

“Software architecture is foundation to the development of large, practical software-intensive applications.” — Software architecture: foundations, theory, and practice. Wiley Publishing.

Sumber: techcrunch.com

Apa itu Software Architecture?

Software architecture adalah sebuah proses untuk mendefinisikan struktur dari suatu aplikasi yang dapat memenuhi seluruh kriteria dari sisi teknis dan juga operasional, untuk mengoptimasi kualitas dari sebuah aplikasi. Software architecture adalah kunci kesuksesan jangka panjang. Software architecture berfungsi sebagai jembatan antara kebutuhan bisnis dengan kebutuhan teknis. Software architecture yang baik harus dapat beradaptasi dengan perubahan yang akan terjadi seiring waktu dalam teknologi perangkat keras dan perangkat lunak.

Software Architecture pada LEARNFAZZ

Software architecture LEARNFAZZ terdiri dari empat komponen utama, yaitu front-end, back-end, DBMS server, dan image server. Topologi arsitektur daat dilihat pada gambar di bawah ini.

Diagram Software Architecture LEARNFAZZ

Front-end: Flutter

Dalam pembuatan aplikasi, kelompok kami menggunakan Flutter pada front-end. Flutter adalah sebuah framework open-source yang dikembangkan oleh Google untuk membangun antarmuka (user interface/UI) aplikasi Android dan iOS.

Dalam pembuatan interface dengan Flutter, kami menggunakan BLoC Pattern. BLoC atau Business Logic Component merupakan sebuah design pattern yang membantu untuk memisahkan presentation dengan business logic. BLoC berdiri sebagai sebuah layer yang menjembatani antara komponen UI dengan back-end. Dengan demikian, kita tidak perlu menyimpan data pada komponen UI. Diagram dari BLoC pattern dapat dilihat pada gambar di bawah ini.

Sumber: https://pub.dartlang.org/packages/bloc

Back-end: Golang

Untuk membuat back-end, kelompok kami menggunakan Golang. Golang (atau biasa disebut dengan Go) adalah bahasa pemrograman yang dikembangkan oleh Google.

Dalam penerapannya, kelompok kami menggunakan Domain-Driven Design (DDD) pattern. DDD adalah sebuah pendekatan yang berfokus pada pemahaman terhadap domain. Domain adalah lingkungan pengetahuan dan aktivitas di mana logika aplikasi berputar. DDD adalah tentang bagaimana membuat software menjadi seperti proses pada dunia nyata, dengan cara menjelaskan bagaimana objek-objek berinteraksi. DDD berguna untuk membuat suatu model yang dapat dipahami dari segi bisnis maupun segi teknologi, yang disebut dengan ubiquitous language. Dengan demikian, orang-orang di dalam tim dapat berbicara bahasa yang sama, menggunakan istilah yang sama, dan memberikan nama yang sama dengan konsep yang sama.

DBMS Server: Postgres

DBMS (Database Management System) adalah sistem yang dirancang untuk mengelola suatu database dan menjalankan operasi terhadap data yang diminta oleh banyak pengguna. DBMS yang digunakan oleh kelompok kami adalah Postgres. PostgreSQL adalah database yang powerful dan dirancang untuk penggunaan dengan banyak client, sehingga keamanan, kecepatan, serta efektifitas penggunaan tidak diragukan lagi.

Image Server: Firebase

Untuk menyimpan gambar yang masuk dari aplikasi, kelompok kami menggunakan firebase. Firebase adalah BaaS (Backend as a Service) yang saat ini dimiliki oleh Google. Firebase merupakan solusi yang ditawarkan oleh Google untuk mempermudah pekerjaan Mobile Apps Developer, salah satunya adalah file storage.

--

--