20 Ekim 2017 Cuma

A Pattern Language For MicroServices

Link : A pattern language for microservices


Core patterns

Which architecture should you choose for an application?

Decomposition

How to decompose an application into services?

Deployment patterns

How to deploy an application’s services?

Cross cutting concerns

How to handle cross cutting concerns?

Communication patterns

Style

Which communication mechanisms do services use to communicate with each other and their external clients?

External API

How do external clients communicate with the services?

Service discovery

How does the client of an RPI-based service discover the network location of a service instance?

Reliability

How to prevent a network or service failure from cascading to other services?
  • Circuit Breaker - invoke a remote service via a proxy that fails immediately when the failure rate of the remote call exceeds a threshold

Data management

How to maintain data consistency and implement queries?
  • Database per Service - each service has its own private database
  • Shared database - services share a database
  • Saganew - use sagas, which a sequences of local transactions, to maintain data consistency across services
  • API Compositionnew - implement queries by invoking the services that own the data and performing an in-memory join
  • CQRS - implement queries by maintaining one or more materialized views that can be efficiently queried
  • Event sourcing - persist aggregates as a sequence of events
  • Transaction log tailing - publish changes captured in the database’s transaction log as messages
  • Database triggers - use triggers to capture changes made to data
  • Application events - application inserts events into a database table that is used as a message queue

Security

How to communicate the identity of the requestor to the services that handle the request?
  • Access Token - a token that securely stores information about user that is exchanged between services

Testing

How to make testing easier?

Observability

How to understand the behavior of an application and troubleshoot problems?
  • Log aggregation - aggregate application logs
  • Application metrics - instrument a service’s code to gather statistics about operations
  • Audit logging - record user activity in a database
  • Distributed tracing - instrument services with code that assigns each external request an unique identifier that is passed between services. Record information (e.g. start time, end time) about the work (e.g. service requests) performed when handling the external request in a centralized service
  • Exception tracking - report all exceptions to a centralized exception tracking service that aggregates and tracks exceptions and notifies developers.
  • Health check API - service API (e.g. HTTP endpoint) that returns the health of the service and can be pinged, for example, by a monitoring service
  • Log deployments and changesnew

UI patterns

How to implement a UI screen or page that displays data from multiple services?
  • Server-side page fragment composition - build a webpage on the server by composing HTML fragments generated by multiple, business capability/subdomain-specific web applications
  • Client-side UI composition - Build a UI on the client by composing UI fragments rendered by multiple, business capability/subdomain-specific UI components

30 Mart 2015 Pazartesi

Build Version Increment - Visual Studio With T4


Visual Studio 2012 için otomatik build versionunu arttırma işlemini uyarlama süreçini resimlerle anlatacağım. 

Uygulamak istediğimiz projemizde ilk olarak AssemblyInfo.cs sınıfı üzerinden AssemblyFileVersion özelliğini kapatmamız gerekiyor. 




Sonrasında projemize "AssemblyFileVersion.tt" ismi ile  Text Template ekliyelim.





AssmblyFileVersion.tt dosyamızın içeriğini aşağıdaki gibi olduralım. Her build işleminde version değerinin revision özelliğini +1 yapmaktadır. (Major.Minor.Build.Revision)




 

<#@ template language="C#" hostSpecific="True"#>
<#@ output extension="cs" #>
<#@ import namespace="System.IO" #>
<#
	int revisionNumber;
	try
	{
		using(var f = File.OpenText(Host.ResolvePath("AssemblyFileVersion.cs")))
		{
			string s = f.ReadLine().Replace("//","");
			revisionNumber = int.Parse(s) + 1; 
		}
	}catch
	{ 	
		revisionNumber = 0; 
	}
#>
//<#=revisionNumber#>
// 
// This code was generated by a tool. Please do not change this document in any of its parts.
// 

using System.Reflection;

[assembly: AssemblyFileVersion("1.0.0.<#= revisionNumber #>")] 




Son adım bir adım kaldı. AssemblyFileVersion.tt dosyasını her build işleminden önce çalıştırmak. Projemizin Property > Builds Events > Pre-build event command line kısmında aşağıdaki kodu eklememiz yeterli.


 

set textTemplatingPath="%CommonProgramFiles(x86)%\Microsoft Shared\TextTemplating\$(VisualStudioVersion)\texttransform.exe"
if %textTemplatingPath%=="\Microsoft Shared\TextTemplating\$(VisualStudioVersion)\texttransform.exe" set textTemplatingPath="%CommonProgramFiles%\Microsoft Shared\TextTemplating\$(VisualStudioVersion)\texttransform.exe"
%textTemplatingPath% "$(ProjectDir)AssemblyFileVersion.tt"


Projemizi derliyelim ve dosya version değerini kontrol edelim. sürekli arttığını göreceksiniz.





Proje örneği : https://drive.google.com/file/d/0ByRFI3ULXVPuZ3NvaXIxMExHT1E/view


29 Eylül 2014 Pazartesi

Delphi - "Cannot create file %Temp%\EditorLineEnd.ttr"

Windows update sonrası [KB2982791] Delphi 2006 - 2010 arası versiyonlarında süpriz bir şekilde "%Temp%\EditorLineEnd.ttr" dosyasını oluşturamadığı için hata üretip, uygulama kapanmaktadır.

Delphi yi açmadan önce "%Temp%\EditorLineEnd.ttr" dizinindeki dosyayı rename edip, çalıştırdığınızda sorun olmıyacaktır. bu işlemi otomatik uygulayan bir servis yazılımı "dzEditorLineEndsFix".

Kaynak Kodları : http://sourceforge.net/projects/dzeditorlineendsfix/

Download : http://sourceforge.net/projects/dzeditorlineendsfix/files/latest/download


'This is a small program that fixes the problem introduced by the Windows update KB2982791 with Delphi 2006 to 2010 that causes the error "Cannot create file %Temp%\EditorLineEnds.ttr".
It works by moving the file to its own unique subdirectory whenever it is being created.'


5 Ağustos 2014 Salı

Gmail aramalarında 20 'den fazla sonuç döndürmek (Gmail return more than 20 search results)

Gmail ayarlarından aşağıdaki gibi ayarlamanıza rağmen arama yaptığınızda arama sonucu 20 ile sınırlıdır. toplu taşıma yapacağım ya da silme işlemlerinde beni epey zorlamaktadır.


Bunu aşmak için ise URL kısmında ufak bir hile yaparak 100 sonuç dönmektedir.  Gmail üzerinden arama yaptığımızda , örnek "deneme" şeklinde. aşağıdaki gibi url üzerinden çağıracaktır.


 
https://mail.google.com/mail/u/0/#search/deneme




Bu URL üzerinde "#search" kısmı yerine "#section_query" yazıp , adrese gittiğimizde 100 sonuç dönmekte ve sonraki sayfalarda 100 erli gittiğini göreceksiniz.


 
https://mail.google.com/mail/u/0/#section_query/deneme




Girişimcilerin işine yarayacak siteler

cjbarber ve webrazzi sitelerinden toparlanan ve genişletilen liste yedekleme amaçlı burdanda yayınlıyorum. (alıntıdır)

Tarayıcı/Eposta  Testi

Hata Takibi

Planlama ve Proje Yönetimi

Uygulama Geliştirme Araçları

İş ve Trafik Analitiği

Optimizasyon ve A/B Testi

Kullanıcı Analitiği

Kullanıcı Testi

İnsan Kaynakları

Maaş Cetveli

Entegrasyon Sürekliliği/Kod Kalitesi

Kontrol Panelleri

Hata/İstisna İşleme

Log İzleme

Uygulama Performansı

Yükleme Testi

Sunucu İzleme

Müşteri Desteği/Yardım Masaları

İşlemsel E-posta

Diğer API’ler

Site Arama

E-posta Pazarlama

E-posta Toplama/Açılış Sayfası Uygulamaları

CRM/Satış Araçları

Sosyal Medya Pazarlaması

Marka/Patent

Ofis Kiralama

Topluluk Araçları

Kişisel Verimlilik

Prototipleme

İçerik Üretimi/İnfografikler

Müşteri Geribildirimi

Satış

Veri

Veri Tabanı

Log İzleme

Muhasebe/Faturalama

Gelir Analitiği

Ödeme, Faturalama ve İndirmeler

Faturalama ve Ödeme Süreçleri

Bankacılık

Telefon/PBX/Kısa Mesaj

Tavsiye Sistemleri

Sistem İzleme

Arama

Güvenlik

Nakliye

Kullanıcı Geri Bildirimi

Tasarımcılar

Not Alma

Grup İletişimi/Sohbet Araçları

Uzaktan Birlikte Çalışma

DNS

Durum Blogları/Kullanıcı Bildirimleri

Formlar/Anketler

Kaynak Kod Barındırma

Tasarım İşbirliği

PaaS

Sanal Sunucu (VPS)

Heroku Araçları

  • Hirefire

AWS (Amazon Web Services) Araçları

  • Ylastic

Veritabanı-aaS

Backend-aaS

WebSockets-aaS

Hadoop-aaS

Operasyon Bildirim ve Zamanlama

Muhasebe

  • inDinero
  • Xero

Video Barındırma

Wiki/Bilgi Toplama

Harici Yedekleme

  • Tarsnap

Profesyonel Makine Yedekleme

  • Crashplan
  • Arq + S3/Glacier

Uzaktan Çalışanlar

Ürünü Yayına Alma

SEO Araçları

API Üretici

Parola Yönetimi

Trafik Kaynakları/Reklam Platformları

Görev Zamanlama