Arsitektur itu di ibaratkan sebuah bangunan lalu desain adalah pola rancangan arsitektur tersebut yang lebih detail yang nantinya di implementasi sesuai kebutuhan, kayak kita mahu bangun sebuah bangunan aja pilih arsitektur nya seperti apa mahu arsitektur rumah, gedung, atau bikin rumah kos-kosan, lalu desainnya mahu pakai cat apa, batakonya apa, semennya apa seperti halnya komponen-komponen detail sebuah bangunan yang mendukung arsitektur, tugas desainer tentunya lebih detail sehingga bangunan yang dibangun menjadi indah, kokoh, aman, bertahan lama dan sesuai kebutuhan.

Oke Lanjut..

Dari pengertian diatas jika berbicara arsitektur perangkat lunak, dan desain perangkat lunak, tentunya akan meletakkan semua itu pada prinsip-prinsip, metodologi, dan pola pengembangan aplikasi / perangkat lunak modern yang best practices, sesuai spesifikasi dan standar tujuannya agar rancangan sebuah aplikasi dapat sesuai kebutuhan, cepat dan tidak lambat, low cost, aman dari serangan hekel, flexible tentunya bisa di kembangin secara terus-menerus "reusable", intinya bisa effektif dan effisien (ujungnya pasti kesini karena notabene aplikasi adalah platform digunakan untuk sebuah layanan dan layanan harus memudahkan, menguntungkan untuk si pemakai istilah nya pengguna (harus dapat outcome nya gitu hehe). Apalagi di era saat ini teknologi sudah banyak bertransformasi dan meninggalkan hal-hal yang tradisional, meningkatnya demand sebuah layanan teknologi inginnya cepat dalam proses pengembangan hingga live produksi. teknologi cloud computing sudah banyak membantu dalam komponen pengembangan software architecture dan desain hal-hal teknologi yang tradisional atau depreceated sudah mulai di improve dan dikemas dalam produk-produk teknologi cloud menjadi modern stack, jadi kita sudah dipermudah. Dalam menulis untuk memperkaya informasi yang saya dapat beserta pengalaman, saya menggabungkan metode 5W1H jadi biar balance antara materi dan realita ciaaaa hihiy... (sabar ya yang masih joms), oh ya metode ini yang saya masih ingat dari sekolah SD sampai sekarang :D

What ?

Apa Itu Software Arsitektur? Software architecture adalah konsep dan prinsip-prinsip yang digunakan dalam merancang struktur organisasi perangkat lunak. Ini melibatkan pengambilan keputusan tentang elemen-elemen penting dalam perangkat lunak, termasuk komponen, pola desain, antarmuka, dan hubungan antara mereka.

Arsitektur perangkat lunak menggambarkan struktur dan interaksi antara komponen-komponen perangkat lunak, serta aturan dan keputusan desain yang membentuk sistem secara keseluruhan. Tujuan dari arsitektur perangkat lunak adalah untuk menciptakan sistem yang dapat dipahami, dapat dipelihara, dan dapat diperluas dengan baik.

Arsitektur perangkat lunak memainkan peran penting dalam pengembangan perangkat lunak yang sukses. Hal ini membantu dalam mengatur kompleksitas sistem, mengoptimalkan kinerja, meningkatkan keandalan, meningkatkan skalabilitas, dan memfasilitasi perubahan dan evolusi sistem.

Dalam praktiknya, arsitektur perangkat lunak biasanya diwujudkan dalam bentuk diagram seperti diagram blok, diagram komponen, diagram aliran data, atau diagram lainnya yang memvisualisasikan elemen-elemen arsitektur dan hubungan antara mereka.

Berikut adalah beberapa istilah yang umum digunakan dalam arsitektur perangkat lunak:

Arsitektur Perangkat Lunak (Software Architecture): Merujuk pada desain tingkat tinggi yang menentukan struktur organisasi dan komponen perangkat lunak. Ini melibatkan pengambilan keputusan tentang elemen-elemen penting seperti pola desain, komponen, antarmuka, dan hubungan antara mereka.

Komponen (Component): Unit modular dalam perangkat lunak yang memiliki tanggung jawab tertentu dan dapat berinteraksi dengan komponen lain. Komponen dapat digunakan ulang dan memungkinkan pemisahan tanggung jawab dalam sistem.

Pola Desain (Design Patterns): Solusi umum yang telah terbukti untuk masalah desain perangkat lunak yang umum. Pola desain menyediakan pendekatan yang diuji waktu untuk memecahkan masalah tertentu dan membantu dalam pengembangan perangkat lunak yang lebih terstruktur dan dapat dipelihara.

Arsitektur Berorientasi Layanan (Service-Oriented Architecture, SOA): Pendekatan arsitektur yang berfokus pada pemisahan fungsionalitas perangkat lunak menjadi layanan yang independen. Layanan ini berkomunikasi melalui antarmuka terdefinisi dan dapat digunakan ulang dan diintegrasikan dengan fleksibilitas.

Arsitektur Berorientasi Mikro (Microservices Architecture): Pendekatan arsitektur yang mengorganisasi aplikasi sebagai sekumpulan layanan kecil, terisolasi, dan independen. Setiap layanan memiliki tanggung jawab spesifik dan berkomunikasi melalui protokol ringan seperti HTTP atau pesan antara proses.

Arsitektur Berbasis Model (Model-Driven Architecture, MDA): Pendekatan arsitektur yang menggunakan model perangkat lunak sebagai artefak utama dalam siklus hidup pengembangan perangkat lunak. Model ini digunakan untuk menghasilkan kode sumber dan komponen perangkat lunak.

Arsitektur Berbasis Layanan (Service-Based Architecture): Pendekatan arsitektur yang melibatkan pembagian fungsionalitas aplikasi menjadi layanan yang dapat diakses melalui antarmuka yang ditentukan. Layanan ini bisa berjalan di lingkungan yang terdistribusi dan berkomunikasi melalui protokol seperti SOAP atau REST.

Arsitektur Berorientasi Kejadian (Event-Driven Architecture, EDA): Pendekatan arsitektur yang berfokus pada aliran peristiwa dalam sistem. Komponen-komponen dalam arsitektur ini berkomunikasi melalui peristiwa dan respon terhadap perubahan status dan kejadian yang terjadi.

Arsitektur Berorientasi Domain (Domain-Driven Architecture, DDD): Pendekatan yang menempatkan fokus pada pemodelan dan desain perangkat lunak berdasarkan pemahaman yang kuat tentang domain bisnis atau masalah yang sedang diselesaikan.

Arsitektur Berbasis Layanan Web (Web Service-Based Architecture): Pendekatan yang menggunakan layanan web sebagai komponen utama dalam arsitektur. Layanan ini dapat diakses melalui protokol seperti SOAP atau REST dan memungkinkan aplikasi untuk berkomunikasi melalui jaringan.

Ini hanyalah beberapa istilah yang umum digunakan dalam arsitektur perangkat lunak, dan masih banyak lagi istilah yang terkait dengan konsep arsitektur yang lebih spesifik dan canggih.

Tradisional Vs Serverless ?

Tradisional dan serverless adalah dua pendekatan yang berbeda dalam pengembangan dan pengelolaan aplikasi. Berikut adalah perbandingan antara keduanya:

Tradisional:
    Infrastruktur: Dalam pendekatan tradisional, Anda perlu mengelola dan menyediakan infrastruktur sendiri, seperti server fisik atau virtual, jaringan, basis data, dan sebagainya.
    Skala: Anda harus memperkirakan dan mengatur kapasitas infrastruktur sesuai dengan permintaan yang diharapkan. Jika aplikasi menghadapi lonjakan lalu lintas, Anda mungkin harus melakukan penyesuaian manual untuk menangani beban tersebut.
    Manajemen: Anda bertanggung jawab untuk mengelola semua aspek aplikasi, termasuk skalabilitas, toleransi kesalahan, pemantauan, dan keamanan.
    Biaya: Anda harus membayar untuk infrastruktur yang tetap, terlepas dari seberapa banyak aplikasi digunakan. Ini dapat menjadi mahal jika aplikasi mengalami fluktuasi lalu lintas yang tinggi atau jika permintaan tidak terduga.

Serverless:
    Infrastruktur: Dalam pendekatan serverless, penyedia cloud mengelola infrastruktur untuk Anda. Anda tidak perlu memikirkan tentang server fisik atau virtual, jaringan, atau basis data. Pemrosesan aplikasi terjadi pada level fungsi.
    Skala: Serverless secara otomatis mengatur skala aplikasi sesuai dengan permintaan. Fungsi hanya dijalankan saat ada permintaan, dan penyedia cloud secara otomatis menangani penugasan sumber daya yang diperlukan.
    Manajemen: Anda masih bertanggung jawab untuk mengelola logika aplikasi, tetapi tugas seperti skalabilitas, toleransi kesalahan, pemantauan, dan keamanan diambil alih oleh penyedia cloud.
    Biaya: Anda hanya membayar untuk penggunaan yang sebenarnya. Anda tidak perlu membayar untuk infrastruktur yang tidak digunakan. Biaya serverless biasanya berdasarkan jumlah fungsi yang dijalankan dan waktu eksekusi fungsi.

Keuntungan serverless termasuk pemeliharaan infrastruktur yang lebih rendah, skalabilitas otomatis, dan model biaya yang lebih sesuai dengan penggunaan yang sebenarnya. Namun, pendekatan tradisional memberikan fleksibilitas yang lebih besar dalam hal kontrol dan konfigurasi infrastruktur.

Pilihan antara pendekatan tradisional dan serverless tergantung pada kebutuhan aplikasi Anda, tingkat kontrol yang Anda inginkan, dan sumber daya yang tersedia. Penting untuk mempertimbangkan keuntungan dan tantangan dari masing-masing pendekatan sebelum memutuskan mana yang paling sesuai dengan kebutuhan Anda.

Who ?

Software Arsitektur Engineer ?

Software architect engineer adalah orang yang ahli dalam menciptakan desain high-level, mengembangkan suatu software dan merekomendasikan software tersebut kepada customer atau perusahaan tempat seorang software architect bekerja.

Soon

Why ?

Soon

When ?

Kapan harus dilibatkan software arsitek dan software design?

Soon

Where ?

Dimana software arsitek dan design bekerja?

Soon

How ?

Soon

Apa itu IaaS — infrastructure as a service ?

Soon

Apa itu PaaS — platform as a service ?

Soon

Apa itu SaaS — software as a service

Soon

Apa itu XaaS - Anything as a service ?

  • Database as a service (DBaaS)
  • Storage-as-a-Service)
  • Desktop as a service (DaaS)
  • Communications as a service (CaaS)
  • monitoring as a service (MaaS) dan bahkan
  • Malware as a service (MaaS). :D
Soon

Pro dan Kontra XaaS?

Soon

dalam melakukan akses login ke remote server dengan SSH biasanya kita memakai Password. Lebih amannya, Password dapat diganti dengan menggunakan Public Key. Public Key yang dibuat di komputer dicopy ke folder ~/.ssh/authorized_keys. Jika key yang ada di komputer tidak sama persis dengan key yang ada di server meskipun itu penambahan spasi, maka tidak akan bisa login dikarenakan terjadi kegagalan verifikasi key yang digunakan untuk akses login.
 

# Generate key di Linux

ssh-keygen -t rsa -b 4096 -C "ganteng@gmail.com"

# Masukkan nama file untuk menyimpan key. Setelahnya Enter/kosongkan saja. Passphrase untuk memberi proteksi password pada key sebelum digunakan.

# Enter file in which to save the key (/home/ganteng/.ssh/id_rsa): /home/ganteng/.ssh/id_rsa

# File key yang sudah digenerate ada 2, public key .pub dan private key. Buka file public key id_rsa.pub, copy isinya.

# Di server buat folder dan file authorized_keys. Paste public key yang sudah dicopy ke nano editor.

mkdir ~/.ssh
cd ~/.ssh
nano authorized_keys

# Sekarang login ke server seperti biasa, apakah masih meminta password atau langsung login.

ssh ganteng@IPSERVER

# Atau bisa menyebut secara spesifik file key yang digunakan.

ssh -i ~/.ssh/id_rsa.pub ganteng@IPSERVER

# Untuk menonaktifkan login dengan password, set PasswordAuthentication no pada konfigurasi SSH server.

nano /etc/ssh/sshd_config

# Cari baris di bawah ini

# Change to no to disable tunnelled clear text passwords
PasswordAuthentication no

# Restart SSH service

/etc/init.d/ssh restart

List Roles :

  • Scrum Master
  • Fullstack Developer
  • Front End Developer
  • Back End Developer
  • Data Scientist
  • Data Engineer
  • Data Analyst
  • Data Architect
  • UI Designer
  • UX Designer
  • QA Engineer
  • Artificial Intelligence
  • Business Analyst
  • Project Manager
  • Project Administration
  • Solution Architecture
  • Marketing
  • Digital Marketing
  • Machine Learning Engineer
  • Natural Language Processing (NLP) Engineer

Scrum Master

  • Lean&Agile
  • Software Development Life Cycle
  • Infrastructure&Network Architecture
  • Programming Language
  • Software Architecture
  • Technical Documentation Tools

Fullstack Developer

  • Front End Developer
  • Back End Developer
  • Database Knowledge
  • Web Architecture
  • Versi Control System (Melacak perubahan yang dibuat dalam basis kode)
  • Development Frameworks (Express,Django,dll)
  • Third Party Libraries
  • UI/UX Designer
  • Software Development Life Cycle
  • Algorithm & Data Structure
  • Programming Language

Front End Developer

  • Software Development Life Cycle
  • Algorithm & Data Structure
  • API Development
  • Infrastructure & Network Architecture
  • Programming Languange
  • Technical Documentation Tools
  • Infrastructure & Appliaction Security Architecture
  • Testing
  • Content Design

Back End Developer

  • Software Development Life Cycle
  • Algorithm & Data Structure
  • API Development
  • Database Architecture
  • Data Engineering
  • DevOps
  • Messaging (penggunaan database, cache, dan messaging pada robust)
  • Programming language (memahami bahasa pemrograman)
  • Technical documentation
  • Infrastructure & application security architecture
  • Testing

DevSecOps

Tools_DevSecOps

Data Scientist

  • Data Engineering
  • Programming Language
  • Big Data Technology
  • Data Analytic
  • Data Management
  • Data Strategist
  • Data Visualization
  • Aritificial Intelligence
  • Machine Learning
  • Natural Languange Processing

Data Engineer

  • Algorithm & Data Structure
  • Database Architecture
  • Data Engineering
  • Programming Language
  • Software Architecture

Data Analyst

  • Data Engineering
  • Programming Languange
  • Data Analytic
  • Data Management
  • Data Visualization

Data Architect

  • System Development Life Cycle
  • Manajemen Proyek
  • Teknik Desain
  • Testing
  • Natural Language Processing
  • Machine Learning
  • Programming Languange
  • Database Management
  • Data Visualization
  • Predictive Analytic

UI Designer

  • Interaction Design
  • UI Design
  • User Experience
  • User Interface Prototyping
  • User Needs Research
  • User Research
  • Visual Design

UX Designer

  • Interaction Design
  • UI Design
  • User Experience
  • User Interface Prototyping
  • User Needs Research (kemampuan memahami kebutuhan, perilaku, pengalaman, dan motivasi pengguna)
  • User Research (kemampuan merancang, merencanakan, dan melaksanakan riset terhadap pengguna)
  • Visual Design
  • Programming Language

QA Engineer

  • Software Development Life Cycle (SDLC)
  • Algorithm & Data Structure
  • Database Architecture
  • Programming Language
  • Software Documentation
  • Technical Documentation
  • Software Quaity & Security
  • Testing
  • Testing Automation
  • Test Scenario

Artificial Intelligence

  • Programming language
  • Big Data Technology
  • Data Analytic
  • Data Management
  • Data Visualization
  • Machine Learning
  • Robotic Framework

Business Analyst

  • Database Management
  • Business Purpose
  • Programming Languange
  • Web Architecture
  • Microsoft Office
  • Technical Documentation
  • General Pitching and Presentation

Project Manager

  • Agile Method
  • Software Development Life Cycle (SDLC)
  • Project Management
  • Technical Documentation Tools
  • Design Thinking

Project Administration

  • Project Management
  • Techincal Documentation
  • Data Analytics
  • Copy Writing

Solution Architecture

  • IT Architecture, Infrastructure, and Cloud Development
  • DevOps
  • Engineering and Software Architecture Design
  • Network Administration
  • System and Data Security
  • Business Analyst Techniques
  • Various Operating Systems
  • Database Management
  • Web Platforms
  • Programming Language

Marketing

  • Research Market
  • Negotiation
  • Public Speaking
  • Sales presentation
  • Define & Develop Marketing Strategy

Digital Marketing

  • Content management
  • Integrated Marketing Communication
  • Personalization (menyediakan informasi sesuai kebutuhan pelanggan berdasarkan hasil analisis)
  • Search Engine Optimization (SEO)
  • Search Engine Marketing (SEM)
  • Design
  • Data analytics
  • Copy writing

Machine Learning Engineer

  • Data Engineering
  • DevOps
  • Programming Languange
  • Big Data Technology
  • Cloud Engineering
  • Computer Vision
  • Data Analytic
  • Data Management

Natural Language Processing (NLP) Engineer

  • Data Engineering
  • Programming Languange
  • Big Data Technology
  • Bot Technology
  • Computer Vision
  • Data Visualization
  • Digital Signal Processing
  • Machine Learning
  • Natural Language Processing

Tools & Programming Language Pada bagian ini, silahkan memilih tools dan programming language yang Anda kuasai/biasa Anda gunakan

Big Data Technology Tools

  • SQL
  • NoSQL
  • Hadoop Other:

Programming Language

  • Java
  • Java Script
  • JS Framework
  • Matlab
  • Python
  • CSS
  • HTML
  • C/C++
  • C#
  • Flutter
  • Kotlin
  • Unix Shell Scripting Other:

Data Management/Data Analytics/Data Engineering

  • SAS
  • Teradata
  • Phyton
  • C/C++
  • R
  • SPSS
  • Matlab
  • VB Other:

Machine Learning Framework

  • Tensorflow
  • Keras
  • Conda
  • Sckit-Learn
  • PyTorch
  • Azure ML Studio
  • ML Pack
  • WEKA
  • Theano Other:

Cloud

  • AWS
  • GCP
  • Azure
  • Cloudfare
  • IBM Other:

Design Tools

  • Figma
  • Adobe XD
  • InVision
  • Framer
  • Adobe Photoshop
  • Adobe Illustrator
  • Sketchapp
  • Google Suite Apps Other:

Project Management

  • JIRA
  • GitHub
  • GitLab
  • Other:
  • Testing tools
  • Jest
  • Enzyme
  • Spek
  • XCTest Other:

SDLC (Software Development Life Cycle) Tools

  • Katalon
  • Selenium Other:

User Research/User Need Research

  • Google Analytics
  • Behavioral (etnographic studies, usability testing, eyetracking, A/B testing) Other:

Administrative Tools

  • Microsoft Office (e.g Ms. Word, Ms. Excel, Ms. Power Point, etc.)
  • Google Suite (e.g Google Spreadsheet, Google Slide, Google Docs, Google Form, etc.)
  • Online Meeting Platform (e.g Zoom, Google Meet, etc) Other:

Digital Marketing Tools

  • Google Analytics
  • Google Ads

Tambahan Skill Uji Kompetensi LSP TIK (Indonesia) :

  • Graphic Design
  • Grafika Komunikasi
  • Junior Networking
  • Networking
  • Basic Computer Assembly
  • Junior Programming
  • Programming
  • Technical Support
  • Technical 2D Layout Artist
  • Basic Programming
  • Technical 3D Low Poly Model Artist
  • System Analyst
  • Junior Technical Support
  • Technical Motion Graphic Artist
  • Technical 3D Illustration Artist
  • Asset Modeling
  • Motion Graphic 2D
  • Motion Graphic 3D
  • 3D Character Design
  • 3D Animation
  • Database Programming
  • ICT Project Manager
  • ICT Site Management
  • Data Entry Clerk
  • Data Management Staff
  • Data Entry Coordinator
  • Technical Engineer
  • Data Analyst
  • Database Administrator
  • Teknisi Muda Jaringan Komputer
  • Teknisi Utama Jaringan Komputer
  • Network Administrator
  • System Administrator
  • Junior Mobile Programmer
  • Junior Web Developer
  • Junior Web Programmer
  • Junior Network Administrator
  • Intermediate Animator
  • Junior Graphic Designer
  • Junior Computer Technician
  • Teknisi Pusat Data Muda
  • Teknisi Pusat Data Madya
  • Data Center Manager
  • Junior Mobile Computing
  • Cloud Computing Developer
  • Senior Mobile Computing
  • Cloud Computing Architect
  • Cloud Computing Security
  • Cloud Computing Engineer
  • Enterprise Architect
  • ITSM Supervisor
  • Site Operations Manager
  • ERP Analyst
  • Junior Layout Artist
  • Senior Layout Artist
  • Desainer Grafis Junior
  • Multimedia Graphic Designer
  • Camera Operator
  • Book Layouter
  • Book Designer
  • Art Director
  • Video Editor
  • Senior Graphic Designer
  • Basic Office Operator
  • Junior Office Operator
  • Senior Office Operator
  • System Analyst (Okupasi)
  • IT Project Supervisor
  • IT Auditor
  • Junior Cyber Security
  • Cyber Security Analyst
  • Hardware Installation Supervisor
  • IT Security Management Staff
  • Practical Office Advanced
  • Office Basic
  • Office Professional
  • Computer Operator Assistant
  • Infographic
  • Digital Imaging
  • Illustration
  • Photography
  • Modeling Photography
  • Software Quality Control Tester
  • Architectural Photography
  • Journalism Photography
  • Software Engineer
  • Programmer
  • Web Developer
  • Database Programmer
  • Senior Software Engineer