Enterprise Applications Burak Selim Şenyurt Kıdemli Yazılım Danışmanı http://www.buraksenyurt.com Enterprise Applications Bu oturumumuzda kurumsal uygulamaları tanımaya çalışacağız. Temel karaktresitik özelliklerini, çeşitlerini, zorlu yanlarını açıklığa kavuşturacağız. 1 Dosyamızı Açıyoruz Nerden Nereye? Küçük Bir Hikaye İlk Söz Sizin Gerçek Hayattan Enterprise Application Denince Artık Tanımlayabilir miyiz? Son Söz Yine Sizin Sorularınız 2 Bir Zamanlar 1983 Yapımı WarGames isimli filden bir parça görüntü ile oturumumuza başlıyoruz. http://www.imdb.com/title/tt0086567/ Teknoloji sadece son 30 yılda inanılmaz bir hızla ilerledi. 1ler ve 0lar küçük programlara sığmaz oldu. Daha geniş bir ürün yelpazesi, birbirleriyle konuşan uygulamalar oluşmaya başladı. Tek bir ana metod içerisine sığdırılan sistemler, component’ lere sığmaz oldu. Servis yaklaşımları dünyayı ele geçirdi. Büyüyen uygulamalar ve bunlar arasındaki iletişim önem kazandı. Veri büyüdükçe büyüdü(ki büyümeye de devam ediyor) Kısacası devir bu videodaki gibi ankesörlü eski bir telefonla okul bilgisayarına ses sinyali göndermenin ve biyoloji sınavı notunu değiştirmeni de ötesine geçti. 3 Küçük Bir Hikaye Oluklu/Oluksuz Mukavva Üretim Maliyetleri Para kazandığım ilk uygulamayı 1996 yılında Delphi 1.1 programlama dili ile geliştirmiştik. Üniversiteden sınıf arkadaşım Orkun ile öğrencilik yıllarımıza denk gelen bu projede adam başı 125er dolar kazandık. Onun 14.4 Kbps(Kilobit per second) hızında bir modem aldığını hatırlıyorum. Uygulama son derece basitti. Orkun’ un bir aile dostu, matbalar için oluklu/oluksuz mukavva üretimi gerçekleştiriyordu. Tek istediği malzemelerin miktarları ile oynayarak maliyet hesabı yapmaktı. Bir nevi kendi işine özel hesap makinesi yaptırmak istiyordu. Şirkette birbirine Nowel Netware işletim sistemleri ile bağlı bir bilgisayar ağı vardı. Ama patron bilgisayarında Windows 3.11 kullanıyordu. Görüşmeye gittiğimiz ilk gün Nowel terminallerinden bir birimize mesaj göndermiştik. Komut satırından. Nasıl heyecanlandığımızı anlatamam… O yıllarda bug’ lar ile dolu olarak geliştirdiğimiz uygulamaya baktığımızda, kendimizi olağan üstü programcılar zannetmiştik. Çok yanılmışız! :D Geldiğimiz noktaya kadar uğraştığımız, halen uğraşmakta olduğumuz projelere baktığımızda insan oğlunun akıl sınırlarını zorlayan sistemler üretebildiğini ve üretmeye devam edeceğini anlayabiliyoruz. 4 Üzerinde çalıştığınız en karmaşık proje neydi? Neden karmaşıktı? Genel özellikleri nelerdi? Karşılıklı soru cevap ile katılımcıların üzerinde çalıştığı projeler değerlendirilir. Kurumsal çapta değerlendirilebilecek olanlar vurgulanmaya çalışılır. Örnekleri verenlerin neden ilgili uygulamaları kurumsal çapta değerlendirdikleri, zaman yeterliyse tartışılabilinir. (Max 5 Dakika) 5 Gezegen Enterprise Gerçek Hayat Örnekleri Sigorta Kayıtları E-Ticaret Bordro İşleri Seyahat Rezervasyon İşleri Ödeme Sistemleri Facebook Visual Studio C# Derleyicisi Excel Fax Sürücüsü PES 2014 WinRar Word Kredi Hesaplama İşleri Öğrenci Bilgi Sistemi Hastane Otomasyon Scanner Sürücüsü Calculator Photoshop Yazılım dünyasında olan bizlerin etrafı çeşitli tipte ve farklı ölçeklerde uygulamalarla doludur. İşte bunlardan Enterprise kategoride değerlendirebileceklerimizden bazıları; Bu slayt’ da sıralanan uygulamalara ek olarak bildiğimiz, çevreden duyduğumuz başka Enterprise çeşitleri de var. Örneğin ; CRM - Customer Relationship Management, ERP - Enterprise Resource Planning(ERP), SAP, HR Management, BCP - Business Continuity Planning, BI - Business Intelligence, Messaging and Collaboration Systems 6 Enterprise Uygulamaların Genel Özellikleri Enterprise Uygulamaların, kaynaklardan edinilen bilgilere göre bazı karakteristik özellikleri bulunmaktadır. Bunları aşağıdaki maddeler halinde sıralayabiliriz. Kayıt altına alınan büyük miktarda veri vardır. Aynı verinin farklı uygulamlara farklı biçimlerde gösterimi söz konusudur. Kullanıcı sayısı çok fazladır. Kullanıcı arayüzleri çok fazladır. Eş zamanlı işlem sayıları yüksektir. Diğer Enterprise uygulamalar(Özellikle ISV’ ler tarafından yazılmış) ile entegrasyon söz konusudur. Karmaşık iş kuralları vardır. Değişim yönetimi(Change Management) zordur. Güvenlik ile ilişkili zorlayıcı kurallar vardır. Uygulamaların dağıtımı karmaşık olabilir. Değişimlere hızla adapte olmak gerekirken(Scrum, Continous Delivery) kimi zaman da aşırı bürokratik planlar söz konusudur(RFC-Request for Change) 7 Big Data Enterprise uygulamalarda genellikle ilişkisel veritabanı sistemleri var olur ve veri çoğu zaman inanılmaz boyutlardadır. Artan bir ivmeyle büyür. Büyüyen veri aynı zamanda farklı iş birimlerinin de iştahını kabartır. Verinin bu şekilde hızla büyümesi dolayısıyla, tutulması ve içerisinden hızlı sonuçlara ulaşılması da önem kazanır. Bu tip büyüyen veri kümeleri beraberinde bazı sorunlar getirse de, BI uzmanlarının ve özellikle CRMcilerin iştahını kabartmaktadır. Son yıllarda NoSQL gibi sistemler de işin içerisine girmiş ve Enterprise uygulamaların bir enstrümanı haline gelmiştir. Hatta bazı Enterprise uygulamalarda, NoSQL ve Relational DBMS’ lerin bir arada kullanıldığı görülmektedir. Bu melez oluşumlarda gelişmiş arama algoritmalarına da başvurulur. Google MapReduce bunun bilinen örneklerindendir. Günümüzde verinin Cloud sistemlerde de tutulması söz konusudur ve bu nedenle pek çok ürün geliştiricinin sistemleri nasıl ölçekleyeceğini düşünmesine gerek kalmamaktadır. Ucuz makineler ile yatay genişleyebilen, yönetimi kolay, kiralanabilir bu sistemler önümüzdeki yıllarda sektörde iz bırakmaya devam edecektir. 8 Veri Farklılaşır Veri Farklılaşır Verinin farklı bakış açılarına göre farklı gösterimi söz konusudur. Çok teknik detaydaki veri son kullanıcı için anlamlı değildir ve genellikle anlamlı hale getirilmeye çalışılır. Ama aynı veri log’ lara bakan developer’ lar için hataların önceden tespiti veya uyarı sistemlerinin geliştirilmesi açısından kritik olabilir. Erken uyarı sistemleri, Enterprise uygulamaların olmazsa olmaz parçalarındandır. 9 Çok Fazla Kullanıcı Çok Fazla Kullanıcı! Eş zamanlı olarak çalışan çok fazla sayıda kullanıcının bir arada yaşadığı uygulama alanları söz konusudur. Çoğu zaman bu kullanıcıların eşzamanlı(Concurrent) olarak icra ettikleri aksiyonlar vardır. Bu nedenle Enterprise uygulamanın iyi tasarlanması gerekir. Finansal işlemler içeren uygulamalarda bu genellikle kafa karıştırıcıdır (Özellikle 7X24 açık elektronik alış veriş siteleri ile bunu açık arttırma usulüne göre yapan uygulamalarda) Eş zamanlılık iyi organize edilmesi gereken bir vakadır. Transactional işlemlerin önem arz ettiği konularda bu eş zamanlılığı yönetebilmek biraz daha kolay olsa da, NoSQL tabanlı modellerde biraz daha dikkatli olunmalıdır.(Bknz: CAP –ConsistencyAvailabilityPerformanceTolerance Teoremi) 10 Yüksek Eş Zamanlı İşlem Sayısı Enterprise uygulamalarda eş zamanlı olarak gerçekleşen işlem sayıları oldukça yüksektir. Buna Transaction sayısının yüksek olması da eklenebilir. Bu yüzden hızlı cevap verebilen, asenkronluğu iyi uygulayıp sistemin tutarlı kalmasını sağlayabilen çözümlerin ele alınması şarttır. Bu da kimi zaman kod geliştirmeyi zorlu hale getirir. Yüksek bilgi seviyesi gerektirebilir. 11 Sayısız Arayüz Sayısız Arayüz Uygulamaya dahil olan arayüz sayısı fazladır. Buna paralel olarak Entrprise evrenine dahil olan modül sayısı da fazladır. Web arayüzleri, Windows arayüzleri, API/SDKlar üzerinde yazılanlar, Mobil arayüzleri vs… Dışarıya sunulan çeşitli tipte sözleşmeler(Interface tipindeki Contract’ lar) Arayüz sayısının fazla olması farklı geliştirme ortamlarının ele alınması, daha fazla kaynak/insan gücünün de olmasını gerektirir. Bu yüzden Enterprise uygulamaların geliştirilmesinde projelendirme, maliyetlendirme, organizasyon ve koordinasyon önem arz eden konuların başında gelmektedir. 12 Diğerleriyle İletişim Diğer Enterprise uygulamalar ile konuşulması, haberleşilmesi söz konusudur. Pek tabi bir Enterprise çözümün çıktıları, başka enterprise çözümlerin girdileri olabilir. Fakat bu noktada SOA dünyasının ilkeleri de devreye girer. Enterprise uygulamalar çoğunlukla Enterprise mimarilerin bir parçasıdır. Hele ki birbirleri ile haberleşen Enterprise çözümler varsa, bu evrenler arası mesajlaşmaların nasıl olacağı, hangi standartlara uyulacağı büyük önem kazanır. Bu durumda EAI-Enterprise Application Integration gibi modellerin desenleri, SOA’ nın temel ilkeleri devreye girebilir. 13 Karmaşık İş Kuralları Karmaşık ve hatta çoğu zaman biz geliştiricilere mantıksız gelen iş kuralları söz konusudur. Çoğunlukla bir iş kuralını koymak veya var olanı değiştirmek epeyce zordur. Bürokrasinin fazlaca yer aldığı şirketlerde bu tip hamleleri yapmak çeşitli onay mekanizmalarının devreye girmesi nedeniyle oldukça hantal da olabilir. Bazen gerçekten de bir Button’ ın eklenmesi bir haftalık bir süreci gerektirebilir. Bu yüzden diğerleri ile rekabet edebilmek için çevikliği çok daha farklı boyutlarda uygulamak gerekmektedir. Bir başka deyişle değişime hızlı biçimde ayak uydurabilmek, çevik yaklaşımların üst düzeyde ele alınmasını gerektirir. Bu noktada SAFe(Scaled Agile Framework) devreye girer. 14 Değişim Zordur Enterprise uygulamalarda zaman zaman çevik olmayı gerektirecek şekilde yeni talepleri hızla adapte etmek gerekebilir. Oysaki dağıtım süreçleri oldukça karmaşık ve zordur. Akıllı dağıtım planları ve sürekli teslimata yönelik teknikler gerekebilir. Bunun tam tersi durumda söz konusudur. Bazen Enterprise’ ın dağıtımı son derece bürokratik ve zorludur. Scrum, SAFe, Request for Change(RFC) gibi terimler işin içerisine girebilir. 15 Güvenlik Kuralları Zorlayıcıdır Zorlayıcı Güvenlik Kuralları Bazen çözümlerin ihtiyaç duyduğu güvenlik ilkeleri nükleer tesis güvenlik tedbirlerini aratmaz. (NSS 2014e katılan devlet başkanları gibi söz sahibi olan bireylerin söz sahibi olduğu kurallara uymaktan kaçılamaz) Zorlayıcı Güvenlik Kuralları: Enterprise uygulamaların genellikle dışarıya veya farklı enterprise çözümlere açık olan noktaları vardır. Çoğunlukla servis odaklı olan bu iletişim şekillerinde güvenliği sağlamak çok kritiktir ve zorlayıcı kurallar uygulanmak durumundadır. Örnek senaryo : Bir finans kurumunun, kendi verisini dışarıdaki belirli bir kuruma sorgulanabilir şekilde(Örneğin Restful bir servis üzerinden) açması. Bu vakada uyulan bazı güvenlik kuralları şöyle özetlenebilir; Servis https üzerinden sunulmalıdır. DMZ içinde ve dışında servisler olmalıdır. Şirket dışındaki servis içerideki uygulamalar tarafından doğrudan çağırılamaz veya tam tersi. Servis IIS üzerinde host ediliyorsa DB’ ye doğrudan erişim içeren kodlara sahip olmamalıdır. Servisin mesajlaşmalarda kullandığı metinsel içerikler varsa mutlaka secure hale getirilmelidir. vb… 16 Hataları Gidermek Kolay Olmaz Bir çok yere dağıtılmış karmaşık yapıdaki uygulama ağının bir sorun nedeniyle yeniden revize edilmesi her zaman kolay olmayabilir. Hatanın bulunmasının zor olmaması mühimdir. Akıllı uyarı sistemleri, loglama mekanizmaları önemlidir. Ama beraberinde başka sorunlarında doğmasına yol açabilir. Loglanan veri giderek büyür. Anlamlaştırılması zorlaşır. Erken uyarı sistemlerinde eşik değerlerinin belirlenmesi profesyonellik ister. «Hata giderilse bile birilerine hesap verilmesi gerekir. Incident kelimesi havalarda uçuşur. Incident sayısı fazla olan developer' ın yükselmesi de zordur. Incident' lar açıldı mı bunlar için birilerine hesap da verilmesi gerekir. Hiç tanışmadığınız CEO/CIO' nuz ile bir Incident toplantısında karşılaşabilirsiniz. Kendinizi tanıtmak yerine savunmak zorunda kalabilirsiniz. Okuduğunuz okulların bu durumda hiç bir önemi kalmayabilir. Üstelik mutlak suretle bir Kök Sebep Analizi Formu(Hata neydi, neden oldu ve bu hatadan hangi dersler çıkarıldı?) benzeri bir şeyler doldurursunuz. « 17 Üst Düzey Mimariler Konuşulur Kurumsal çözümlerin kullandığı mimariler genellikle sıradan uygulamalarınkine göre daha karmaşıktır. Çoğu zaman farklı mimarilerin bir arada uygulandığı da olur. Hatta belirli mimarilerin belirli parçalarının alınıp hibrid çözümlerin üretilmesi de son derece yaygındır. Enterprise mimarilerin uygulanabilmesi için TOGAF-The Open Group Architecture Framework gibi framework’ ler söz konusudur. İlk olarak 1995de US Department of Defense Technical Architecture Framework for Information Management için yayınlanmıştır. (http://www.opengroup.org/togaf/) Enterprise mimarileri uygulayıp dokümante eden kurumlar sayılıdır. Örneğin; Amerikan İç İşleri Bakanlığı, Amerikan Hazine Bakanlığı , Amerikan Savunma Bakanlığı, MIT Student Services Information Technology Sistemi, Enterprise Mimari gerekliliklerini yerine getiren örnek çözümlerdir. Enterprise Uygulama Mimarileri- http://martinfowler.com/eaaCatalog/ Enterpirse mimariler aslında 4 farklı versiyonla ele alınmıştır. Zachman Framework, TOGAF(The Open Group Architecture Framework) The Federal Enterprise Architecture The Gartner Methodology Bunlara ait bir karşılaştırmayı http://msdn.microsoft.com/en-us/library/bb466232.aspx adresinden incleyebilirsiniz. 18 Örneğin Örnek bir Enterprise Mimari’ nin Logical modelini bu slaytta görebilirsiniz. Söz konusu model MIT’ nin öğrenci bilgi sistemi ile ilişkilidir. Detaylı bilgiler için http://web.mit.edu/itag/eag/FullEnterpriseArchitectureGuide0.1.pdf 19 Şunlara Bir Bakalım… Zachman Framework TOGAF(The Open Group Architecture Framework) The Federal Enterprise Architecture The Gartner Methodology Enterprise Architecture ile İlişkili Önemli Bir Not Remember that, Enterprise Architecture is a path, not a destination. Artık Tanımlayabilir miyiz? Enterprise Application’ ı nasıl tanımlarız? Tüm bu anlatılanlardan sonra, Kurumsal bir uygulamayı nasıl tanımlayabiliriz? 22 Tanım Devlet veya Finans sektörü gibi iş alanlarında çalışacak şekilde tasarlanmış büyük çaplı, karmaşık, ölçeklenebilir, bileşen(Component) odaklı, dağıtık ve görev öncelikli(mission critical) olan, yazılımsal ürünlerdir. EAs, Electronic Arts’ ın kısaltması değildir elbette. Enterprise Appliactions Devlet veya Finans sektörü gibi iş alanlarında çalışacak şekilde tasarlanmış büyük çaplı, karmaşık, ölçeklenebilir, component odaklı, dağıtık ve görev öncelikli(mission critical) olan yazılımsal platformlardır. 23 Son söz sizin Son söz siz de. Kafada oluşan soru işaretleri mutlaka vardır. 24 Time to go Time to Go! Burak Selim Şenyurt http://www.buraksenyurt.com 25