Microservices

Kayla Ayu Rachmahyastuti

Sosial Media


1 orang menyukai ini
Suka

Summary

Microservices adalah suatu framework architecture yang digunakan sebagai model dalam pembuatan aplikasi cloud yang modern. Pada Microservices setiap aplikasi dibangun sebagai sekumpulan service dan setiap layanan berjalan dalam processnya sendiri. Masing-masing dari aplikasi tersebut dapat saling berkomunikasi melalui API atau Application Programming Interface.

Description

  • SUMMARY

Membuat Microservices menggunakan aplikasi VSCODE yang terdiri dari Server 1, Server 2, dan Gateway

 

  • DESCRIPTION

Microservices adalah suatu framework architecture yang digunakan sebagai model dalam pembuatan aplikasi cloud yang modern. Pada Microservices setiap aplikasi dibangun sebagai sekumpulan service dan setiap layanan berjalan dalam processnya sendiri. Masing-masing dari aplikasi tersebut dapat saling berkomunikasi melalui API atau Application Programming Interface.

API Management 302: Using an API Gateway in Microservice Architecture - API  Academy

 

  • SERVER 1

Yang dimana server 1 ini menghubungkan dengan API dari rajaongkir

 

from email import header

from flask import Flask, jsonify, request

import requests

 

app = Flask(__name__)

 

@app.route('/')

@app.route('/index'methods=['GET'])

def index():

    return "Berhasil Terhubung ke API"

 

@app.route('/province'methods=['GET'])

def get_province():

 

    # Input bisa diganti isinya atau dihubungin ke fungsi yang lain

    id = request.form['id']

 

    paramsdict(id=id)

    url'https://api.rajaongkir.com/starter/province'

    headers = {

        'key'"01d6edb0fed618f2563bf4d3f6877d55"

    }

    responserequests.get(urlheaders=headersparams=params)

    print(response)

    return response.text

 

@app.route('/city'methods=['GET'])

def get_city():

 

    # Input bisa diganti isinya atau dihubungin ke fungsi yang lain

    id = request.form['id']

 

    paramsdict(id=id)

    url'https://api.rajaongkir.com/starter/city'

    headers = {

        'key'"01d6edb0fed618f2563bf4d3f6877d55"

    }

    responserequests.get(urlheaders=headersparams=params)

    print(response)

    return response.text

 

@app.route('/cost'methods=['POST'])

def get_cost():

 

    # Input bisa diganti isinya atau dihubungin ke fungsi yang lain

    origin = request.form['origin']

    destination = request.form['destination']

    weight = request.form['weight']

    courier = request.form['courier']

 

    payload = {

        "origin"origin,

        "destination"destination,

        "weight"weight,

        "courier"courier

    }

    url'https://api.rajaongkir.com/starter/cost'

    headers = {

        'key'"01d6edb0fed618f2563bf4d3f6877d55"

        'content-type'"application/x-www-form-urlencoded"

    }

    responserequests.post(urlpayloadheaders=headers)

    print(response)

    return response.text

 

if __name__ == '__main__':

    app.run(debug=True,port=5001)

 

#response_API = requests.get('https://api.rajaongkir.com/starter/province')

#print(response_API.status_code)

 

 

  • SERVER 2

Pada server 2 kami membuat endpoint atau data CRUD

 

#!flask/bin/python

from flask import Flask, request, jsonify, make_response

import pymysql

 

# Membuat server Flask

app = Flask(__name__)

 

# Koneksi ke database MySQL

mydbpymysql.connect(

    host="localhost",

    user="root",

    passwd="",

    database="product_db"

)

 

# Routing Index

@app.route('/')

@app.route('/index')

def index():

    return "[SERVER 2] DATABASE PRODUK"

 

@app.route('/get_product'methods=['GET'])

def get_product():

    # Awal Query

    query"SELECT * FROM products WHERE 1=1"

    values = ()

 

    # Mengatur Parameter

    sku = request.args.get("sku")

    product_name = request.args.get("product_name")

    weight = request.args.get("weight")

    stocks = request.args.get("stocks")

 

    if sku:

        query += " AND sku=%s "

        values += (sku,)

    if product_name:

        query += " AND product_name LIKE %s " 

        values += ("%"+product_name+"%", )

    if weight:

        query += " AND weight LIKE %s " 

        values += ("%"+weight+"%", )

    if stocks:

        query += " AND stocks=%s "

        values += (stocks,)

 

    mycursormydb.cursor()

    mycursor.execute(queryvalues

    row_headers = [x[0for x in mycursor.description]

    datamycursor.fetchall()

    json_data = []

    for result in data:

        json_data.append(dict(zip(row_headersresult)))

    return make_response(jsonify(json_data),200)

 

@app.route('/insert_product'methods=['POST'])

def insert_product():

    hasil = {"status""gagal insert produk"}

    

    try:

        data = request.json

 

        query"INSERT INTO products(sku, product_name, weight, stocks) VALUES(%s,%s,%s,%s)"

        values = (data["sku"], data["product_name"], data["weight"], data["stocks"], )

        mycursormydb.cursor()

        mycursor.execute(queryvalues)

        mydb.commit()

        hasil = {"status""berhasil insert produk"}

 

    except Exception as e:

        print("Error: "str(e))

        hasil = {

            "status""gagal insert data produk",

            "error"str(e)

        }

 

    return jsonify(hasil)

 

@app.route('/update_product'methods=['PUT'])

def update_product():

    hasil = {"status""gagal update data produk"}

    

    try:

        data = request.json

        sku_awaldata["sku_awal"]

 

        query"UPDATE products SET sku = %s "

        values = (sku_awal, )

 

        if "sku_ubah" in data:

            query += ", sku = %s"

            values += (data["sku_ubah"], )

        if "product_name" in data:

            query += ", product_name = %s"

            values += (data["product_name"], )

        if "weight" in data:

            query += ", weight = %s"

            values += (data["weight"], )

        if "stocks" in data:

            query += ", stocks = %s"

            values += (data["stocks"], )

 

        query += " WHERE sku = %s"

        values += (sku_awal, )

 

        mycursormydb.cursor()

        mycursor.execute(queryvalues)

        mydb.commit()

        hasil = {"status""berhasil update data produk"}

 

    except Exception as e:

        print("Error: "str(e))

 

    return jsonify(hasil)

 

@app.route('/delete_product/<sku>'methods=['DELETE'])

def delete_product(sku):

    hasil = {"status""gagal hapus data produk"}

    

    try:

        # data = request.json

 

        query"DELETE FROM products WHERE sku=%s"

        values = (sku,)

        mycursormydb.cursor()

        mycursor.execute(queryvalues)

        mydb.commit()

        hasil = {"status""berhasil hapus data produk"}

 

    except Exception as e:

        print("Error: "str(e))

 

    return jsonify(hasil)

 

@app.route('/total_weight'methods=['POST'])

def hitung_nilai():

    hasil = {"status""gagal hitung total berat"}

    

    try:

        data = request.json

 

        if "berat_barang" not in data:

            return jsonify({

                "error""Data berat_barang tidak ada didalam Request Body"

            })

        

        berat_barangdata["berat_barang"]

        jumlah_barangdata["jumlah_barang"]

 

        total_berat = (berat_barangjumlah_barang)

        

        hasil = {

            "status""berhasil hitung total berat",

            "total_berat"total_berat

        }

 

    except Exception as e:

        print("Error: "str(e))

 

    return jsonify(hasil)

    

if __name__ == '__main__':

    app.run(debug=True,port=5002)

 

 

  • GATEWAY

 

from flask import Flask, jsonify, request

import requests

 

app = Flask(__name__)

 

@app.route('/')

@app.route('/index'methods=['GET'])

def index():

    url'http://127.0.0.1:5001'

    responserequests.get(url)

    return response.text

 

#server1

@app.route('/server1/gettasks'methods=['GET'])

def gettasks1():

    id = request.form['id']

    formdict(id=id)

    url'http://127.0.0.1:5001/province'

    responserequests.get(urldata=form)

    return response.json()

 

@app.route('/server1/gettasks1'methods=['GET'])

def gettasks2():

    id = request.form['id']

    formdict(id=id)

    url'http://127.0.0.1:5001/city'

    responserequests.get(urldata=form)

    return response.json()

 

@app.route('/server1/gettasks2'methods=['POST'])

def gettasks3():

    

    origin = request.form['origin']

    destination = request.form['destination']

    weight = request.form['weight']

    courier = request.form['courier']

 

    formdict(origin=origindestination=destinationweight=weightcourier=courier)

    url'http://127.0.0.1:5001/cost'

    responserequests.post(urldata=form)

    return response.json()

 

#server2

@app.route('/server2/gettasks'methods=['GET'])

def getdata():

 

    product_name = request.form['product_name']

    sku = request.form['sku']

    weight = request.form['weight']

    stocks = request.form['stocks']

 

    formdict(product_name=product_namesku=skuweight=weightstocks=stocks)

    url'http://127.0.0.1:5002/get_product'

 

    responserequests.get(urlparams=form)

    return response.text

 

if __name__ == '__main__':

    app.run(debug=Trueport=5003host='0.0.0.0')

 

 

  • DEPLOY DENGAN MENGGUNAKAN HEROKU

Background pattern

Description automatically generated

Informasi Course Terkait
  Kategori: Cyber Security
  Course: Rancang Bangun Pendeteksi Suhu dan Kelembaban dengan Cloud Thingspeak