Messing with Service Meshes using Meshery
Tags: cloudnative, meshery, serverless
Published: 2020-05-20 08:39:00

[Comment]: # (All of this is placeholder text. Use this format or any other format of your choosing to best describe your project and experience.)

[Note]: # (If you used the GitHub Student Developer Pack on your project, add the "#githubsdp" tag above. We’d also love to know which services you used and how you used it!)
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/y4tyuqgw8vydhytfnaty.png)
## What is Meshery?
Meshery is the Service Mesh Management Tool
Meshery enables operators, developers, and service owners to realize the full potential of a service mesh...

## But wait! What is a service mesh exactly?
Service meshes in the Cloud Native Space are tools for adding observability, reliability, security, and features to applications by inserting them at the platform layer rather than the application layer. 

In a control plane service meshes provide the following: 
Provides policy, configuration, and platform integration.
Takes a set of isolated stateless sidecar proxies and turns them into a service mesh.
Does not touch any packets/requests in the data path.

While in the data plane, service meshes provide the following as well : 
Provides policy, configuration, and platform integration.
Takes a set of isolated stateless sidecar proxies and turns them into a service mesh.
Does not touch any packets/requests in the data path.


## How does Meshery come into the picture?

Meshery provides federation, backend system integration, expanded policy and governance, continuous delivery integration, workflow, chaos engineering, and application performance tuning.

## Benefits of using Meshery for service meshes : 

- Configuration Best Practices
Assess your service mesh configuration against deployment and operational best practices with Meshery's configuration analyzer.

![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hateig9q8wnjbwn978ma.png)
 

- Service Mesh Interface (SMI) Conformance
Operate and upgrade with confirmation of SMI compatibility.
Defines compliant behavior. Produces compatibility matrix.
Ensures provenance of results. Runs a set of conformance tests.
Built into participating service mesh’s release pipeline.

![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vase2p2qxx39yg45bnuu.png)
 

- The service mesh management plane
Supports the following : 
1.Lifecycle
2.Workload 
3.Performance 
4.Configuration 

![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/x4nzs9d2605d6dhgiix8.png)
 

- Performance Management
Most importantly, you can do performance comparison between different service meshes by doing load tests. 

![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/agobdpvxuz9xkudgpuln.png)

```
type PerformanceProfile struct {
	ID *uuid.UUID `json:"id,omitempty"`

	Name              string         `json:"name,omitempty"`
	LastRun           string         `json:"last_run,omitempty"`
	Schedule          *uuid.UUID     `json:"schedule,omitempty"`
	LoadGenerators    pq.StringArray `json:"load_generators,omitempty" gorm:"type:text[]"`
	Endpoints         pq.StringArray `json:"endpoints,omitempty" gorm:"type:text[]"`
	ServiceMesh       string         `json:"service_mesh,omitempty"`
	ConcurrentRequest int            `json:"concurrent_request,omitempty"`
	QPS               int            `json:"qps,omitempty"`
	Duration          string         `json:"duration,omitempty"`
	TotalResults      int            `json:"total_results,omitempty"`

	RequestHeaders string `json:"request_headers,omitempty"`
	RequestCookies string `json:"request_cookies,omitempty"`
	RequestBody    string `json:"request_body,omitempty"`
	ContentType    string `json:"content_type,omitempty"`

	UpdatedAt *time.Time `json:"updated_at,omitempty"`
	CreatedAt *time.Time `json:"created_at,omitempty"`
}

``` 
The above code shows the performance criteria for different service meshes. 

## The Meshery Architecture! 
![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0aftt9mv3t5i0dg85yqz.png)

- For Providers : 
![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/oswgir3v0plzt5mpcqq4.png)
 

- For Clients : 
![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ueko5imuaxl98as56fsr.png)