Tek yapılı uygulamaları ayırmak için Service Fabric kullanmaUsing Service Fabric to decompose monolithic applications

Bu örnek senaryoda bir yaklaşım kullanarak aracılığıyla olan inceleyeceğiz Service Fabric zahmetli bir tek parçalı uygulama parçalama için bir platform olarak.In this example scenario, we walk through an approach using Service Fabric as a platform for decomposing an unwieldy monolithic application. Burada bir IIS/ASP.NET web sitesinde bir uygulamaya parçalama yinelemeli bir yaklaşım birden çok, yönetilebilir mikro hizmetlerden düşünün.Here we consider an iterative approach to decomposing an IIS/ASP.NET web site into an application composed of multiple, manageable microservices.

Mikro hizmet mimarisi için bir tek parçalı mimariden taşıma aşağıdaki avantajları sağlar:Moving from a monolithic architecture to a microservice architecture provides the following benefits:

  • Küçük, anlaşılır bir birim kod değiştirme ve yalnızca bir birim dağıtın.You can change one small, understandable unit of code and deploy only that unit.
  • Her kod birimi yalnızca birkaç dakika gerekir veya dağıtmak için daha az.Each code unit requires just a few minutes or less to deploy.
  • Bu küçük biriminde bir hata varsa, yalnızca bir birim değil tüm uygulama çalışma durdurur.If there is an error in that small unit, only that unit stops working, not the whole application.
  • Küçük kod birimleri birden çok geliştirme ekipleri arasında kolayca ve ayrı ayrı bir şekilde dağıtılabilir.Small units of code can be distributed easily and discretely among multiple development teams.
  • Yeni geliştiriciler, her birim ayrık işlevselliğini hızla ve kolayca kavrayın.New developers can quickly and easily grasp the discrete functionality of each unit.

Bu örnekte bir sunucu grubunda büyük bir IIS uygulama kullanılır ancak yinelemeli ayrıştırma ve barındırma büyük uygulama herhangi bir türü için kullanılabilir.A large IIS application on a server farm is used in this example, but the concepts of iterative decomposition and hosting can be used for any type of large application. Bu çözüm Windows kullanırken, Service Fabric Linux üzerinde de çalıştırabilirsiniz.While this solution uses Windows, Service Fabric can also run on Linux. Bunu şirket içi, Azure veya tercih ettiğiniz bulut sağlayıcısı VM düğümlerinde çalıştırılabilir.It can be run on-premises, in Azure, or on VM nodes in the cloud provider of your choice.

İlgili kullanım durumlarınıRelevant use cases

Bu senaryo, yaşayan büyük parçalı Web uygulamalarına olan kuruluşlar için uygundur:This scenario is relevant to organizations with large monolithic Web applications that are experiencing:

  • Tüm Web sitesi sonu küçük kod değişiklikleri hatalar oluştu.Errors in small code changes that break the entire website.
  • Yayın gerek nedeniyle birden çok gün alma yayınlar tüm Web sitesini güncelleştirin.Releases taking multiple days due to the need to release update the entire website.
  • Yeni geliştiriciler ekleme veya karmaşık kod nedeniyle ekipler, uygun olandan daha fazla bilgi edinmek tek gerektiren ana uzun ramp yukarı zaman.Long ramp-up times when onboarding new developers or teams due to the complex code base, requiring a single individual to know more than is feasible.

MimariArchitecture

Service Fabric bir barındırma platformu olarak kullanarak, biz büyük bir IIS web sitesi aşağıda gösterildiği gibi bir mikro hizmetler koleksiyonu dönüştürebilirsiniz:Using Service Fabric as the hosting platform, we can convert a large IIS web site into a collection of microservices as shown below:

Mimari diyagramı

Yukarıdaki resimde, biz büyük bir IIS uygulamasına tüm bölümleri ayrıştırıldı:In the picture above, we decomposed all the parts of a large IIS application into:

  • Gelen tarayıcı isteklerini kabul eden bir yönlendirme veya ağ geçidi hizmeti, hangi hizmet bunları işlemesi belirlemek için bunları ayrıştırır ve hizmet isteği iletir.A routing or gateway service that accepts incoming browser requests, parses them to determine what service should handle them, and forwards the request to that service.
  • Resmi olarak sanal dizinleri ASP.NET uygulaması olarak çalışan tek IIS sitesi altında olan dört ASP.NET Core uygulamaları.Four ASP.NET Core applications that were formally virtual directories under the single IIS site running as ASP.NET applications. Uygulamaları, kendi bağımsız mikro hizmetler halinde birbirinden ayrılmıştır.The applications were separated into their own independent microservices. Değiştirilen, tutulan ve ayrı ayrı yükseltilmiş olabilir etkisidir.The effect is that they can be changed, versioned, and upgraded separately. Bu örnekte biz.Net Core kullanarak her bir uygulama yeniden yazıldı ve ASP.NET Core.In this example, we rewrote each application using .Net Core and ASP.NET Core. Bunlar olarak yazılmış Reliable Services yerel olarak tam Service Fabric platform özellikleri ve avantajları (iletişim hizmetleri, sistem durumu raporu, bildirimleri, vb.) erişebilmek için.These were written as Reliable Services so they can natively access the full Service Fabric platform capabilities and benefits (communication services, health reports, notifications, etc.).
  • Adlı bir Windows hizmeti Hizmeti'nin, bir Windows kapsayıcı böylece artık temel alınan sunucunun kayıt defterine doğrudan değişiklik yapar ancak kendi içinde çalıştırabilir ve tüm bağımlılıkları ile tek bir dağıtılması yerleştirilmiş birim.A Windows service called Indexing Service, placed in a Windows container so that it no longer makes direct changes to registry of the underlying server, but can run self-contained and be deployed with all its dependencies as a single unit.
  • Bir zamanlamaya göre çalışır ve siteler için bazı görevler gerçekleştiren bir çalıştırılabilir bir arşiv hizmeti.An Archive service, which is just an executable that runs according to a schedule and performs some tasks for the sites. Biz değiştirilmeden yapmanız gerekeni yapar ve değiştirmek için yatırım değil belirlediğinden, doğrudan bir tek başına yürütülebilir dosya barındırılır.It is hosted directly as a stand-alone executable because we determined it does what it needs to do without modification and it is not worth the investment to change.

Dikkat edilmesi gerekenlerConsiderations

Küçük bit kullanıma tek parçalı mimariden tek çağırabilirsiniz mikro hizmetler halinde faktörlenebilen kod tanımlamak başlamak için ilk zorluktur bakın.The first challenge is to begin to identify smaller bits of code that can be factored out from the monolith into microservices that the monolith can call. Yinelemeli olarak zaman içinde tek bir koleksiyon, geliştiricilerin olacağını kolayca anlayın, değiştirmek ve düşük risk hızla dağıtmanızı Bu mikro ayrılmıştır.Iteratively over time, the monolith is broken up into a collection of these microservices that developers can easily understand, change, and quickly deploy at low risk.

Service Fabric, mikro hizmetler çeşitli formlarında çalıştıran destekleme kapasitesine sahip olduğundan seçildi.Service Fabric was chosen because it is capable of supporting running all the microservices in their various forms. Örneğin bir karışımını tek başına yürütülebilir dosyaları, yeni küçük web siteleri, küçük yeni API'ler ve kapsayıcılı hizmetler, vb. olabilir. Service Fabric, tek bir küme üzerinde bu tüm hizmet türleri birleştirebilirsiniz.For example you may have a mix of stand-alone executables, new small web sites, new small APIs, and containerized services, etc. Service Fabric can combine all these service types onto a single cluster.

Bu son, bölünmüş uygulama edinmek için yinelemeli bir yaklaşım kullandık.To get to this final, decomposed application, we used an iterative approach. Bir sunucu grubunda büyük bir IIS/ASP.NET web sitesiyle Başladık.We started with a large IIS/ASP.NET web site on a server farm. Sunucu grubunun tek bir düğüm, aşağıda gösterilmiştir.A single node of the server farm is pictured below. Birden çok sanal dizin ile özgün web sitesi varsa, ek bir Windows hizmet site çağrıları ve bazı düzenli bir site arşiv bakım gerçekleştiren bir yürütülebilir dosya.It contains the original web site with several virtual directories, an additional Windows Service the site calls, and an executable that does some periodic site archive maintenance.

Tek parçalı mimari diyagramı

İlk geliştirme yinelemesinde, IIS sitesini ve sanal dizinleri yerleştirilen bir Windows kapsayıcı.On the first development iteration, the IIS site and its virtual directories placed in a Windows Container. Bunun yapılması, işletimsel, ancak temel alınan sunucusu düğümüne işletim sistemi sıkı şekilde bağlı kalması site sağlar.Doing this allows the site to remain operational, but not tightly bound to the underlying server node OS. Kapsayıcı çalıştırın ve temel alınan Service Fabric düğüm tarafından düzenlenir, ancak site (kayıt defteri girişlerini, dosyaları, vb. üzerinde) bağımlı olduğundan herhangi bir duruma sahip düğüm yok.The container is run and orchestrated by the underlying Service Fabric node, but the node does not have to have any state that the site is dependent on (registry entries, files, etc.). Kapsayıcıda olan tüm öğeleri.All of those items are in the container. Biz de dizin oluşturma hizmeti bir Windows kapsayıcısında aynı nedenlerle yerleştirmiş.We have also placed the Indexing service in a Windows Container for the same reasons. Kapsayıcıları, dağıtılmış, tutulan ve bağımsız olarak ölçeklenen olabilir.The containers can be deployed, versioned, and scaled independently. Son olarak, biz arşiv basit bir barındırılan hizmet tek başına yürütülebilir dosya özel gereksinimleri olmayan kendi içinde bir .exe olduğundan.Finally, we hosted the Archive Service a simple stand-alone executable file since it is a self-contained .exe with no special requirements.

Nasıl büyük web sitemizi artık kısmen bağımsız birimlerine ve daha fazla zaman izin verdiği ölçüde ayrıştırılmasını hazır ayrılmış aşağıdaki resimde gösterilmektedir.The picture below shows how our large web site is now partially decomposed into independent units and ready to be decomposed more as time allows.

Kısmi ayrıştırma gösteren mimarisi diyagramı

Daha fazla geliştirme yukarıdadır tek büyük varsayılan Web sitesi kapsayıcı ayırma üzerinde odaklanır.Further development focuses on separating the single large Default Web site container pictured above. Sanal dizin ASP.NET uygulamaların her biri birer kapsayıcı bir kaldırılır ve ASP.NET Core için unity'nin güvenilir hizmetler.Each of the virtual directory ASP.NET apps is removed from the container one at a time and ported to ASP.NET Core reliable services.

Her sanal dizinlerin kullanıma düzenlendiğini sonra varsayılan Web sitesi tarayıcı gelen istekleri ve bunları doğru ASP.NET uygulama yönlendiren kabul eden bir ASP.NET Core güvenilir hizmeti olarak yazılır.Once each of the virtual directories has been factored out, the Default Web site is written as an ASP.NET Core reliable service, which accepts incoming browser requests and routes them to the correct ASP.NET application.

Kullanılabilirlik, ölçeklenebilirlik ve güvenlikAvailability, Scalability, and Security

Service fabric mikro hizmetler çeşitli biçimlerdeki destekleme yeteneği bunları hızlı ve basit aynı küme üzerindeki arasındaki çağrıların tutarken.Service Fabric is capable of supporting various forms of microservices while keeping calls between them on the same cluster fast and simple. Service Fabric, bir hataya dayanıklı, kapsayıcılar, yürütülebilir dosyaları, çalıştırabilir ve hatta kendi kendini onaran kümesi mikro hizmetler, ('güvenilir için yukarıdaki başvurulan hizmetler') için doğrudan yazmak için yerel API vardır.Service Fabric is a fault tolerant, self-healing cluster that can run containers, executables, and even has a native API for writing microservices directly to it (the 'Reliable Services' referred to above). Platform, sıralı yükseltmeler ve her bir mikro hizmetin sürüm oluşturma işlemlerini kolaylaştırır.The platform facilitates rolling upgrades and versioning of each microservice. Daha fazla ya da daha az için Service Fabric kümesine dağıtılmış belirli mikro hizmet çalıştırmak üzere platformunun söyleyebilirsiniz ölçek daraltma veya genişletme yalnızca gereksinim duyduğunuz mikro hizmetler.You can tell the platform to run more or fewer of any given microservice distributed across the Service Fabric cluster in order to scale in or out only the microservices you need.

Service Fabric, ağ, depolama ve bir işletim sistemi sanal (veya fiziksel) düğümden oluşan bir altyapı üzerine kurulmuş bir kümedir.Service Fabric is a cluster built on an infrastructure of virtual (or physical) nodes, which have networking, storage, and an operating system. Bu nedenle, bir dizi yönetim, Bakım ve izleme görevleri vardır.As such, it has a set of administrative, maintenance, and monitoring tasks.

İdare ve denetim kümesinin dikkate alınması gereken istersiniz.You'll also want to consider governance and control of the cluster. Diğerinden yalnızca rasgele üretim veritabanı sunucunuza veritabanları dağıtma kişiler istemezsiniz gibi bazı Gözetimi olmadan Service Fabric kümesine uygulama dağıtma kişiler istersiniz.Just as you would not want people arbitrarily deploying databases to your production database server, neither would you want people deploying applications to the Service Fabric cluster without some oversight.

Service Fabric birçok farklı barındırma yeteneğine sahip uygulama senaryoları, hangilerinin senaryonuz için geçerli görmek için biraz zaman alabilir.Service Fabric is capable of hosting many different application scenarios, take some time to see which ones apply to your scenario.

FiyatlandırmaPricing

Azure'da barındırılan bir Service Fabric kümesi için en büyük maliyeti sayısı ve boyutu, kümenizdeki düğümlerin parçasıdır.For a Service Fabric cluster hosted in Azure, the largest part of the cost is the number and size of the nodes in your cluster. Azure, belirttiğiniz temel düğüm boyutunu oluşan bir küme hızlı ve basit oluşturulmasına izin verir, ancak bilgi işlem ücretleri düğümlerinin sayı ile çarpılan düğüm boyutunu temel alır.Azure allows quick and simple creation of a cluster composed of the underlying node size you specify, but the compute charges are based on the node size multiplied by the number of nodes.

Diğer daha az maliyetli maliyet her düğümün sanal diskler için depolama ücretleri ve ağ GÇ çıkış ücretlerini (örneğin ağ trafiği Azure dışında bir kullanıcının tarayıcısına) azure'dan bileşenleridir.Other less costly components of cost are the storage charges for each node's virtual disks and network IO egress charges from Azure (for example network traffic out of Azure to a user's browser).

Maliyet hakkında bir fikir edinmek için küme boyutu, ağ ve depolama için bazı varsayılan değerleri kullanan bir örnek oluşturduk: Bir göz atın fiyatlandırma hesaplayıcısını.To get an idea of cost, we have created an example using some default values for cluster size, networking, and storage: Take a look at the pricing calculator. Durumunuza uygun bu varsayılan hesaplayıcı değerleri güncelleştirmek çekinmeyin.Feel free to update the values in this default calculator to those relevant to your situation.

Sonraki AdımlarNext Steps

Kullanılarak oluşturulmak platformuyla tanımak için biraz zaman alabilir belgeleri ve çok farklı gözden geçirme uygulama senaryoları Service Fabric için.Take some time to familiarize yourself with the platform by going through the documentation and reviewing the many different application scenarios for Service Fabric. Belgeleri, hangi küme oluşur, ne çalışabilmesi için, yazılım mimarisi ve bakım için bildirir.The documentation will tell you what a cluster consists of, what it can run on, software architecture, and maintenance for it.

Service Fabric Service fabric'in gösteri için mevcut bir .NET uygulamasını dağıtma hızlı.To see a demonstration of Service Fabric for an existing .NET application, deploy the Service Fabric quickstart.

Geçerli uygulama açısından farklı işlevleri hakkında düşünmek başlayın.From the standpoint of your current application, begin to think about its different functions. Bunlardan birini seçin ve nasıl, yalnızca bu işleve tamamına ayırabilirsiniz düşünün.Choose one of them and think through how you can separate only that function from the whole. Bir kerede bir ayrık, anlaşılır, parça sürer.Take it one discrete, understandable, piece at a time.