Oracle Autonomous Database (ATP), Java, TAC… vb. Teknolojiler ile Mission Critical Kesintisiz ve Maksimum Performanslı Cloud Native Uygulama Geliştirme
Erdem Gürbüz:
Sevgili Fevzi Korkutata bizlerle. Fevzi hoş geldin. Konumuz bugün Oracle database üzerinde kesintisiz uygulama geliştirme. Ben seni tanıyorum, arkadaşların da tanıması için öncelikle bir iki cümle ile kendinden bahsedebilir misin?
Fevzi Korkutata:
…Çok büyük ve çok kritik uygulamalarda kullanılan mevcut Oracle ve JAVA teknolojilerinin en iyi ve en performanslı şekilde kullanılması için danışmanlıklar verip çözümler üretiyorum…
Merhabalar, ismim Fevzi Korkutata. Volthread’de CTO görevini üstleniyorum, aslında teknik bir yöneticiyim. Oracle teknolojilerini, Oracle topluluğunu Middleware ve development anlamında beslemeye çalışıyorum. Teknik bilgimizi paylaşmaya çalışıyoruz. Bu konuda çok fazla teknik eğitim veriyorum. Aynı zamanda “Oracle Developer Meetup İstanbul” grubunun da kurucu organizatörüyüm. Çok büyük ve çok kritik uygulamalarda kullanılan mevcut Oracle ve JAVA teknolojilerinin en iyi ve en performanslı şekilde kullanılması için danışmanlıklar verip çözümler üretiyorum. Bu arada bu fırsatı sağladığınız için çok teşekkür ediyorum Erdem Bey.
Üniversiteden sonra Java ile tanıştıktan sonra kariyerim şekillendi, devamında Middleware ve Integration alanına yöneldim. Bugün Oracle Autonomous Database konuşacağız. Sadece bununla sınırlı kalmayıp işin bir de kodlama tarafıyla da ilgileneceğiz. O yüzden çok keyifli ve bilgilendirici bir sunum olacak.
Erdem Gürbüz:
Şu anki en popüler yazılım programlama dili hangisidir? Bu konuda bizi bilgilendirebilir misiniz?
Fevzi Korkutata:
…Görselde de gördüğünüz listenin ilk sırasında JAVA geliyor…
Görselde de gördüğünüz listenin ilk sırasında JAVA geliyor. Nasıl TV kanalları reytingleri paylaşır ise, bu da güncel programlama dilleri reyting tablosu. Bu tablo çok gerçekçi ve güncel, Şubat 2019 ile 2020 tarihlerini kapsayan verileri barındırıyor. Peki bu tablo nasıl ortaya çıkıyor, Google gibi arama motorlarından yapılmış aramalar ile elde edilmiş tablo bu gerçekten. Biliyorsunuz Google aslında bizim her şeyimizi biliyor. Sizin bir developer olduğunuzu da biliyor. Bir programlama veya bir yazılım geliştirme yapıyorsunuz, bir yerde takılı kaldığını düşünün. Devamında birisine soracaksınız veya bir API Doc’a ulaşacaksınız; ne yaparsınız? İlk olarak Google’da arama yaparsınız. Tabloda bir numarada JAVA, daha sonra C programlama dili (C dili embedded programlama ve Linux işletim sistemi programlamada bir hayli çok kullanılıyor), üçüncü olarak da Python programlama dili geliyor. Python büyük çıkış yaptı ve zaman zaman arayı açtı. Hatta Github’ın 2019 istatistiklerinde Python, Java’yı kod push etmede geçmiştir. Bu arada Python programlama dili akademik ve bilimsel alanlarda da bir hayli kullanılıyor.
Diğer taraftan şöyle yorumlayabilirim; son 20 yıldır Java’da sürekli uygulamalar geliştiriliyor ve bu uygulamalar şu an canlı sistemlerde yaşıyor. Bazı müşterilerimizde hala Java 1.4 kullanan sitemlerle karşılaşıyoruz.
Ben bunu neden belirtiyorum ve bu tabloyu neden gösteriyorum? Şu anda Java ile, C ile, Python ile yazılmış bir hayli sistem var. O bakımdan ülkemizde de Java, Dot Net, C#, Python… vb. programlama alanlarında ciddi açık var. Biz bile çok işin içinde olduğumuz halde istediğimiz Java geliştiricileri bulamıyoruz. Çözüm olarak Java’yı çok iyi bildiğimiz için, kendi içimizde yetiştirmeyi tercih ediyorum. Bu nedenle IT’de yeni başlayan arkadaşlar için kariyerlerine yatırım yaparlarken bu tarz tablolara bakmalarında fayda olduğunu düşünüyorum.
İkinci görsel tabloyu TIOBE denilen güvenilir bir siteden aldım. 2002 de Java yüzde 25–27’lerde iken; şimdi yüzde 17’lere gerilemiş. Sonradan yüzde 20’lere tekrardan çıkmış. Bazen ikinci olduğu da olmuş. Java olsun, Python olsun bu programlama dilleri ile yazılmış bir hayli hali hazırda canlı sistem var ve doğal olarak bu sistemlerde çalışan çok fazla yazılım olduğu için bu alanda kendini geliştiren uzmanlara her zaman ihtiyaç olacaktır. O bakımdan bir programlama dili öğrenirken bu reyting tablosuna bakmalarında her zaman fayda olduğunu düşünüyorum.
Erdem Gürbüz:
Konu başlığımızı zaten biliyorsunuz kesintisiz uygulama geliştirme. Kesintisiz uygulama geliştirme denildiğinde ne anlamalıyız?
Fevzi Korkutata:
…Uygulamada bir saniye, bir salise bile kesinti olduğunda benim buna tahammülüm yok dediğiniz bir uygulamanız varsa bu sistem “Mission Critical” bir uygulamadır. Siz böyle bir sistemi devreye alacaksanız doğal olarak her şeyi düşünmeniz gerekir ve bütün yedekliliğin sağlanması için ilgili teknolojik çözümleri uygulamak gerektiğini bilmemiz gerekiyor…
Kesintisiz ve sürekli güncelleme altyapısı sistemlerin her zaman erişilebilir olması için temel yapı taşlarıdır. Peki kesintisiz uygulama geliştirme ne demektir? Konu özelinde açıklamak gerekirse; diyelim ki yazılım geliştirme iş hayatına yeni başlıyorum ve öğrenmiş olduğum programlama dili ile bir uygulama geliştirdim ve bu yeni uygulamayı hizmete açmak istediğimizi varsayalım. İşte bu noktada işler karmaşıklaşabiliyor. Bu uygulamayı canlıya almak için bazı kontroller gerçekleştirmek gerekiyor. Birincisi “Mission Critical” mıdır? “Mission Critical” ne demektir? Uygulamada bir saniye, bir salise bile kesinti olduğunda benim buna tahammülüm yok dediğiniz bir uygulamanız varsa bu sistem “Mission Critical” bir uygulamadır. Siz böyle bir sistemi devreye alacaksanız doğal olarak her şeyi düşünmeniz gerekir ve bütün yedekliliğin sağlanması için ilgili teknolojik çözümleri uygulamak gerektiğini bilmemiz gerekiyor. Bu uygulamanın en güncel versiyonu deploy edildiğinde ne şekilde davranacak, bir alışveriş uygulamasında sepetinize bir ürün attınız ve başka bir bilgisayara geçtiğinizde bu bilginin orada da devam edebiliyor olması, örneğin sistemdeki session bilginiz bir sunucu instance’ında cache sistemde tutulduğunu varsayalım ve devamında örneğin o instance’da arıza meydana geldiğinde sistemi kullanan son kullanıcı kaldığı yerden devam edebilmesi gerektiğini bilmemiz gerekiyor. Açıkçası bunların tamamını sistem sahiplerinin düşünüyor olması lazım. Kritik sistemlerin iyi düşünülmüş bir yazılım mimari çerçeveden çıkıp, öylece canlı sisteme alınması gerektiğini düşünüyorum. Peki bu kesintisizliği ve devamlılığı sağlarken ne gibi enstrümanlarımız var?
Oracle veri tabanı veya benzeri veri sistemlerine bağlı uygulamalar için “uygulama katmanında” yapılması gereken geliştirmeler, konfigürasyonlar veya kullanılması gereken çeşitli enstrümanlar var. Oracle veri tabanı özelinde bazı destekleyici teknolojileri sıralamak isterim. Şöyle ki;
- Universal Connection Pool (UCP), teknoloji dünyasında birçok uygulama sunucusu seçeneği vardı. Örnek vermek gerekirse, Microsoft’un IIS’i, IBM’in WebSphere’i, Red Hat’in JBoss’u, yine sektörde en çok kullanılan Java Application Server olarak Tomcat, Jetty benzeri pek çok uygulama sunucusu vardır. Bu uygulama sunucuları üzerinde geliştirdiğiniz Java uygulamalar ile Oracle Database’ine bağlanmak istiyorsanız UCP’yi etkin kullanmanız lazım.
- Recommended Connection URL: Oracle veri tabanları için bağlantı bilgisinin tutulduğu TNS bilgisi vardır; Java’da database bağlantı bilgileri “JDBC URL” ile belirtilir ve TNS destekli “Connection String” verilebilmektedir. Bu “Connection String” değeri ATP için yani otonom database için Oracle dokümantasyonunda tavsiye edilen şekilde düzenlemiş olması gerekiyor. Diğer türlü sağlıklı bir bağlantı sağlanamaz.
- Fast Application Notification (FAN): Oracle veri tabanlarında ONS, Oracle Notification Service, denen bir yapı vardır. Bu sistem FAN kullanarak, yani “Fast Application Notification” ile kendisine bağlı client sistemlere veri tabanı sağlığı ile ilgili önden bilgi yayını yapabiliyor. Örneğin RAC destekli bir Oracle database kurdunuz ve node’lardan birisinde sıkıntı olduğunu düşünelim, ya da database node servislerinden birisinde sıkıntı olduğunu düşünelim, bu durumda Oracle Database öyle bir database ki bu durumu kendisine bağlanan clientlara bilgi verebiliyor. Uygulama geliştirirken ve ya altyapı kurarken bu Oracle veri tabanı ONS FAN teknolojisinin özelliklerinden faydalanmak gerektiğini düşünüyorum.
- Request Boundaries: Request Boundaries, yani uygulama request çerçevenizi yine iyi hesaplamanız lazım.
- Transparent Application Continuity (TAC): Transparent Application Continuity yani TAC dediğimiz, sunucu tarafı backend sistemlerde bir kesinti yaşandı, örneğin yarıda kalmış bir transaction olduğunu düşünelim, bu durumda Oracle Otonom Database’i yarım kalan transaction’ın replay edilmesi ya da recover edilebilmesi altyapısını sunuyor. Gerçekten bu çok çok önemli bir özellik. Böylelikle sizin yarıda kalmış örneğin bir para transferi EFT transaction’ınız vardı, bunu TAC ile kaldığı yerden devam ettirebilmek mümkün oluyor. Örneğin yarım kalmış bir çeşit transfer vardı, ya da satın alma süreci vardı, kaldığı yerden devam edebilmesi için kullanıcıyı yönlendirebilirsiniz. Bu da uygulama süreç yedekliliğinin sağlanmış olması, her şeyin başa sarması yerine ilerin kaldığı yerden devam etmesi anlamına geliyor.
- MAA Architecture: Yine veri tabanı sunucu katmanında yapılması gereken “MAA Architecture” var. Bu özellik için de database servisleri kullanmanız lazım. Diğer bir deyişle, gidip regular database bilgisini paylaşırsanız ve burayla bir bağlantı sağlarsanız MAA Architecture altyapısını kullanamamış olursunuz. Bu yönde database servisler sağlamanız lazım ki, arıza senaryolarında servislere yapılmış bağlantıları bir diğer database servisine taşıyabilesiniz.
Erdem Gürbüz:
İzin verirsen bu konuda bir sorum daha olacak. Geçenlerde bir alışveriş sitesine girdim ve siteden incelediğim bir ürünü alışveriş sepetine attım ama satın almadım ve öylece siteden çıktım. Daha sonradan bana bir şöyle e-posta ulaştı. “Alışveriş sepetinde bir şey mi unuttun, istersen kargo bedavaya gönderelim” vb. şeklinde bir e-posta. Açıkçası bu da benim hoşuma gitti devamında gelen linke tıklayarak yarım kalan alışverişimi tamamladım. Bu bir pazarlama stratejisi mi ve bunun uygulama devamlılığı ile ilgisi var mıdır?
Fevzi Korkutata:
…Uygulama deployment’larında, güncellemelerinde, altyapı yenileme çalışmalarında, upgrade projelerinde teknolojinin nimetlerinden faydalanarak kesintisizliği sağlayabilmek büyük ölçüde mümkün…
Evet, bu tamamen bir pazarlama stratejisi ve bunu tam anlamıyla destekleyen kesintisiz uygulama altyapısı diyebiliriz. İşin içerisinde ölçeklemek var, ölçmek var ve en önemlisi ilgili yazılım öyle bir kurgulanmış ki, senin daha fazla alışveriş yapabilmene yönelik özellikler eklenmiş. Şöyle ki; sen sepete bir şey eklemişsin, belki o an için alma almama kararını vermeye çalışıyorsun veya beklediğin bir indirim var onu bekliyorsun… vb. Öyle bir durumdasın ki; en başta da belirttiğim gibi senin son kullanıcı olarak mevcut durumun verinin işlenmesi senaryosu ile birebir örtüşüyor. “Mission Critical” bir uygulama yazılmış ve session bilgisini ilgili persistence store’da tutmuş, Erdem’in işlem hareketlerini baz alarak ve arka tarafta bu veriyi işleyip bir sürece sokmuş ve devamında sana bir “push notification” gönderilmiş. Burda e-posta kanalı kullanılmış ve belki de ilgili e-ticaret sitesinin bir uygulaması telefonunda yüklü olmuş olsaydı, belki de sana cep telefonundan bir “push notification” göndererek de bunu yapabilecekti.
Özetleyecek olursak, veri bütünlüğü, kesintisizlik bu örnekte bir pazarlama enstrümanı şeklinde kullanılarak ilgili veri işlendi ve bu sayede kullandığın platform yarım kalınmış bir alışverişi satışa dönüştürdü. E-ticaret platformu için çok ciddi bir başarı. Örnekten de anlaşılacağı üzere kesintisiz uygulama bir bütün olarak düşünülmelidir. Her türlü kullanıcı hareketinde bir yavaşlık, problem ile karşılaşılırsa bu durum kullanıcıyı kaybetmemize sebep olacak ve bize de gelir kaybı olarak yansıyacaktır. Uygulama deployment’larında, güncellemelerinde, altyapı yenileme çalışmalarında, upgrade projelerinde teknolojinin nimetlerinden faydalanarak kesintisizliği sağlayabilmek büyük ölçüde mümkün. Eğer siz kullanıcılara bu kesintisizlik ve devamlılık deneyimini yaşatmazsanız, kullanıcı platformunuzdan keyif almaz, yavaşlık sıkıntısı yaşar, doğal olarak bu olumsuz senaryolar ile karşılaşırsa sıkılır ve zamanla platformunuzu kullanmaktan vazgeçer. Örneğin kampanyalar yaptınız, trafiği kendinize çekebildiniz fakat uygulama açılmadı. Bu durumda da kullanıcı alış veriş sepetlerini satış başarısına dönüştüremezsiniz. O bakımdan Oracle veri tabanının kullanımı, Oracle teknolojileri ve bu yönde diğer development teknolojilerinin donatılarıyla detaylıca implemente edilmeli, sürekliliği ve kesintisizliği sağlayan bütün detaylar düşünülmelidir.
Erdem Gürbüz:
Oracle, sektörde yazılım geliştiricilerini ne şekilde destekliyor? Oracle Bulut’da bunun karşılığı var mıdır? Bu konuda bizi bilgilendirebilir misin?
Fevzi Korkutata:
…Öncesinde yazılım paketi demek bizim için EAR oluşturmak, WAR oluşturmak yada IIS paketi oluşturmaktı. Fakat şimdi yazılım paketi denince insanların aklına konteyner teknolojileri, CI/CD pipeline, Docker, Kubernetes… vb. teknolojiler geliyor açıkçası…
Başta da söylediğim gibi yazılım geliştiricilere yönelik çevrimiçi etkinlikler düzenliyoruz. Zaman zaman Oracle Developer Meetup etkinlikleri de organize ederek mümkün olduğunca yazılım geliştiricileri desteklemeye çalışıyoruz. Bu anlamda meetup.com’da “Oracle Developer Meetup Istanbul” grubumuzu ve şahsımı takip etmenizi tavsiye ederim. Oracle, şimdiye kadar her zaman geliştiriciler ile yakın çalıştı. Nitekim Oracle, Sun Microsystems firmasını satın alarak Java’nın da sahibi oldu. Yine benzer şekilde Oracle Application Server (OAS) vardı zamanında, BEA firmasını satın alarak aynız zamanda Oracle, WebLogic Application Server’ın da sahibi oldu. Bu WebLogic denilen uygulama sunucusu aslında 20 yaşın üzerinde. Gerçekten dünyada WebLogic üzerine konumlanmış “mission critical transaction” taşıyan yüzbinlerce uygulama var. O bakımdan Oracle her zaman developer’ları destekledi ve geliştirdiği teknolojiler ile developer’ların yanında oldu. Öncesinde JavaOne konferansı vardı, şimdi Oracle Code One olarak değişti bu isim, artık Oracle sadece Java’yı değil; bütün programlama dillerini destekliyor.
Oracle Bulutta da bütün “open source” geliştirme teknolojilerinin birebir karşılığı var gerçekten. Slaytta da göründüğü gibi yazılım dünyasında alt yapı anlamında daha modern, DevOps dediğimiz “development ve operasyonun iç içe geçmiş olduğu bir yaklaşım ile, developer’ın lokal bilgisayarından 100 instance’lık canlı sistemlere kadar bir kod döngüsünden bahsediyoruz. Öncesinde yazılım paketi demek bizim için EAR oluşturmak, WAR oluşturmak yada IIS paketi oluşturmaktı. Fakat şimdi yazılım paketi denince insanların aklına konteyner teknolojileri geliyor, CI/CD pipeline geliyor, Docker geliyor açıkçası. Siz dockerize ettiğiniz bir uygulamayı ve bunu deploy edeceksiniz doğal olarak bulut ortamlara yüklemeniz lazım ve scale-up, scale-down edebilmeniz lazım. Bütün public bulut teknolojileri, yani son kullanıcıya açık bulut teknolojileri bu alt yapıyı sunmak durumunda ve sunuyor. Eğer bu alt yapıyı sunmamışsa ben ona gerçek manada bulut çözümü diyemem. Mesela atıyorum, DigitalOcean, Oracle, Amazon… vb. public bulut sağlayıcılar size eğer zorunda kalmadıkça kendi işinizi kendiniz göremiyorsanız -self servis- ben buna bulut falan demem. O bakımdan bu alt yapıyı hepsi gerçekten veriyor. Bizlerin de yerel veri merkezlerinde bakış açımızın bu yönde olması gerektiğini düşünüyorum.
Tamam bu konteyner altyapılar sağlandı, devamında bunların orkestrasyonu söz konusu oldu. İşte burada Kubernetes devreye girdi, Docker Swarm devreye girdi. Dediğim gibi siz bu gelen trafik ihtiyacına göre scale-up ve scale-down özelliğini bu teknolojiler ile yapabilir oluyorsunuz. Bu noktada Oracle Bulut, Oracle Container Engine for Kubernetes ürünü ile “managed container orchestration” servis altyapısı sunuyor. Böylelikle siz Docker uyumlu hale getirdiğiniz ve Kubernetes uyumlu olan bütün A’dan — Z’ye teknolojilerinizi Oracle Bulut’da devreye alıp hizmete açabilirsiniz. OCI yapısını kullanarak bu altyapınızı müşterilerinize sunabilirsiniz.
Erdem Gürbüz:
Şimdi de Java’ya biraz girelim istersen. Java dünyasında neler oluyor ve Oracle Bulut Java geliştiricilerine hangi imkanları sağlıyor? Biraz bundan bahseder misin?
Fevzi Korkutata:
…Öncesinde bu “cloud native environment” kavramı yoktu, CNCF’in oluşumuna kadar etkili oldu, ve günlük IT hayatımıza yerleşti ve her geçen gün etkisini arttırarak devam ettireceği de muhakkak…
Şimdi sunumdan da görüldüğü üzere, bu görsel Oracle’ın kurumsal Java vizyonunu ve Java uygulama geliştirme platformunu, çözümlerini temsil ediyor. Artık kendi data center’ınız olsa bile yazılım altyapısı, teknoloji altyapısı biraz daha “cloud native” olmak durumunda. Neden? Çünkü private buluttan public buluta bir günde taşıyabileceğiniz “lift and shift” dediğimiz altyapıyı sahip olmuş oluyorsunuz. Doğal olarak daha açık işletim sistemleri ve konteyner teknolojileri ve sistemleri var. Bunların üzerinde “cloud navite environment” var. Öncesinde bu “cloud native environment” kavramı yoktu, CNCF’in oluşumuna kadar etkili oldu, ve günlük IT hayatımıza yerleşti ve her geçen gün etkisini arttırarak devam ettireceği de muhakkak.
Kubernetes, Operators, Docker, Cri-o, Helidon, Jenkins… vb. teknolojiler var. Bunlar benim enstrümanlarım artık. Gerçekten “cloud navite environment” dediğim, DevOps dediğim bu altyapıyı, bu yazılım teknolojileri sayesinde oluşturabilmek mümkün artık. Eğer ben bu teknolojileri kendi yazılımıma uyarlarsam veya yeni yazdığım yazılımları bu teknolojilerle uyumlu olarak geliştirirsem modern bir IT altyapısına kavuşacağım demektir. Gerçekten hem public bulutta hem de özel bulutta daha yönetilebilir, daha ölçeklenebilir, daha sürdürülebilir bir yazılım mimarisine ve altyapısına sahip olmuş oluyorum. Az evvel bir örnek vermiştik, ATP veri tabanı provizyonlayacağımızı söylemiştik. Nelere ihtiyacımız var? Dört beş adet bilgi lazım bunun için değil mi? Eskiden neler gerekiyordu biliyorsun; makineyi veri merkezine taşı, kurulumunu yap, kablolama vs. minimum bir ay! Şimdi o bir ayı, bildiğin on dakikaya, bir dakikaya kadar indirgemişiz. İşte bu imkân on-premise için de geçerli. Tamam senin yine bir kabinetin olacak, kabinetine böyle devasa sunucular yerleştirdin diyelim, ama artık bu “bare metal” sunucuları klasik sanallaştırma teknolojileri ile yönetmek gerçekten yeterli gelmiyor, lokal veri merkezi on-premise’de de yeterli gelmiyor. Bunun neticesinde çözümler daha “cloud native” olması lazım.
Oracle’da Java dünyasında geleneksel uygulama kütüphanesi dediği “Java Enterprise Edition” vardı, “Oracle WebLogic” vardı. Açıkçası WebLogic Enterprise Java’nın amiral gemisi niteliğinde. Geldiğimiz noktada, Oracle artık daha açık kaynak kod olma yönünde karar aldı. Java EE kodlarını Eclipse’e verdi böylelikle Jakarta EE projesi başlatılmış oldu. Jakarta EE artık Eclipse Foundation üzerinden tamamen açık kaynak kod geliştirme şeklinde ilerliyor. Aslında Oracle kendi Java EE yönetimini, kendi kodlarını, spec’lerini “open source” dünyaya bırakmış oldu. Öncesinde de büyük oranda open-source idi diyebiliriz ama bütün yönetim, bütün tasarruf Oracle’ın elindeydi. Oracle bu gücünü Eclipse’e devretti, artık sadece Oracle değil, Oracle’ın yanında IBM, Red hat var, Pivotal yeni ismiyle VMware Tanzu var. Bu şekilde sponsorluklar, community katkıları ve firmaların katkıları ile Jakarta EE olarak proje yürütülüyor.
Diğer taraftan mikroservis dünyası var, Java Helidon, GraalVM, Quarkus projeleri dikkat çeken diğer projeler. Oracle 8 yıl boyunca Oracle Labs’ta geliştirdiği GraalVM’i yayınladı. Bu teknoloji sayesinde bütün “virtual machine” tabanlı programalama dillerini GraalVM üzerinde çalıştırabiliyorsunuz. Aslında sizin bir tane VM’iniz oluyor GraalVM, o bütün proses VM’leri yönetiyor ve çok da hızlı gerçekten. Sonuç olarak siz çoklu programlama dili altyapısını (polyglot programming) gerçeklemiş oluyorsunuz.
Entepede ise hibrit uygulamaların ortam yönetimi teknolojiler var. Grafana, Prometheus, Keycloack, Rancher, Jagger… vb. open-source teknolojilerin tamamını geliştirmiş olduğunuz Java uygulamasıyla Oracle Buluta entegre edip çalıştırabilirsiniz.
Erdem Gürbüz:
Biraz da Oracle WebLogic Server’dan bahsedelim Fevzi. Oracle WebLogic uygulama sunucusu için yol haritası nasıl şekillendi? Bizi bekleyen yenilikler var mıdır, varsa nelerdir?
Fevzi Korkutata:
…WebLogic versiyonu 11g ve 12.1.x olan firma ve kurumları bir upgrade projesi planlamasında fayda var. Açıkçası bu konuda her türlü desteği vermeye hazırız…
Oracle WebLogic Server desteği mevcut versiyonlar için slaytta listelediğim gibi şekillendi. Oracle 11g olan 10.3.6 versiyonlar için açıkçası JDK 7’de olmak kaydıyla 2021 sonuna kadar desteği verildi. Ama şu bir gerçek 11g versiyonunda olanlar, 12.2’ye yükseltmesi gerekiyor. Ama 12.1 versiyonlar olanlar da iyi durumda değil . 12.2.x versiyonları çok daha oturmuş ve olgun durumda. Dediğim gibi WebLogic versiyonu 11g ve 12.1.x olan firma ve kurumları bir upgrade projesi planlamasında fayda var. Açıkçası bu konuda her türlü desteği vermeye hazırız. 2020 de Oracle 14.1.1 versiyonunu yayınladı. Oracle WebLogic versiyon numaralandırma Oracle veri tabanından ayrıştı. Numaralandırma Oracle Database’de 18c, 19c, 20c… vb. şeklinde ilerliyor, Oracle WebLogic de öyle olmadı açıkçası. 12’den sonra 14’e atlandı 13 çıkarılmadı. Yakında zamanda Oracle Fusion Middleware 14.1.2 ve Oracle WebLogic 14.1.2 versiyonları da yayınlanmış olacak. O bakımdan firmaların ve kurumların şimdiden buna hazırlık yapmasında fayda var.
Oracle WebLogic Server ve Oracle Coherence ürünleri 12.2.1’den sonra iç içe geçmiş durumda tabi ki her ürünün de lisanslaması birbirinden farklı.
Oracle WebLogic’de aşağıdaki yenilikler bizimle artık;
- Java EE 8 ve Jakarta EE 8 desteği. Bu desteği veren sınırlı sayıda Java Enterprise Application Server kaldı
- Hem JDK 8 desteği verecek ve JDK 11 desteği verilecek
- Önceki versiyonları ile uyumlu olacak
- Hem On-Premise’de hem bulutta desteği verilecek.
- 14.1.2 versiyonu ile Oracle Fusion Middleware, Oracle SOA Suite, Oracle Service Bus (OSB) ve Oracle IDM… vb. ürünlerin desteği de gelecek
Erdem Gürbüz:
Geliştirici ve uygulama katmanı gözüyle Oracle ATP’nin avantajları nelerdir? Neden Oracle ATP seçmeliyim? Ya da neden veya nerede klasik veri tabanı seçmeliyim?
Fevzi Korkutata:
…Bu imkanlar sayesinde siz farklı karakterde olan uygulamalarınızı Oracle ATP Database’inde konumlandırabilirsiniz. Aynı zamanda Oracle ATP uygulama devamlılığını da destekliyor. Örneğin plansız bir kesinti oldu, uygulamayı ayağa kaldırırsın uygulama kaldığı yerden devam eder…
Aslında sen bahsetmiştin biraz, Oracle ATP’de Active Data Guard dahili geliyor, DML için oldukça önemli bir özellik. İşte burda da Oracle ATP seçmek için, developler’lar için çok güzel avantajlar var şöyle ki, APEX dahili geliyor. Yani siz data’larınızı taşıdınız, veri modelinizi kurdunuz, veriler artık Oracle ATP’de duruyor. Çok rahat APEX’i kullanarak arayüzler geliştirebilirsiniz ve tamamen mobil cihaz uyumlu ekranlar tasarlamak mümkün.
Daha önce GeoSpatial dediğimiz coğrafik bilgi sistemlerinin kullandığı Spatial veri desteği artık dahili geliyor. Veriyi XML olarak çekmenin yanında JSON desteği de geldi. Aynı zamanda GeoSpatial ve text desteği var. Bu özellikler sayesinde siz multi-model veri tabanı şeması tasarlayabilirsiniz. Diğer database ürünlerinde bunu yapmak oldukça maliyetli. Bu imkanlar sayesinde siz farklı karakterde olan uygulamalarınızı Oracle ATP Database’inde konumlandırabilirsiniz. Aynı zamanda Oracle ATP uygulama devamlılığını da destekliyor. Örneğin plansız bir kesinti oldu, uygulamayı ayağa kaldırırsın uygulama kaldığı yerden devam eder. Bu çok değerli bir özellik, bu özelliği API üzerinden erişerek kullanabilir. TAC dediğimiz Transaction Affinity Continuity teknolojisi de uygulama devamlılığını destekleyen diğer bir başka özellik.
Bir diğer önemli ve modern özellik ise Oracle ATP şemaları doğrudan REST veri sağlamak için konfigüre edilebilir. ORDS dediğimiz bir özellik var siz bütün veri tabanı şemalarına ve şemaların içindeki verilere REST formatta erişebilirsiniz. Doğal olarak developer’lara katman katman yapılar sunuluyor ve sonuç olarak yazılım geliştirme maliyetleri önemli ölçüde düşebiliyor. Oracle ATP veri tabanı güvenlik seviyesinde ise Oracle Wallet üzerinden bağlantı sağlayarak üst düzey erişim kontrolü imkanı veriyor ve ACL’ler (Access Control List) tanımlayabilirsiniz. Access Control List’ler üzerinden kimin erişip kimin erişemeyeceğini sağlayabilirsiniz.
Erdem Gürbüz:
Hangi programlama dilinde hangi teknolojileri kullanarak Oracle ATP’ye bağlantı sağlayabiliriz?
Fevzi Korkutata:
…Öncesinde biz Oracle WebLogic üzerinden çok rahat “next next” deyip “username, password, service ID” bilgilerini girerek datasource bağlantısı yapabiliyorduk. Ama şu an öyle değil. Görselden de görüleceği üzere Wallet’ın içeriğinde “Truststore.jks” Java Keystore dediğimiz host bilgilerini giriyoruz…
Eskiden JDBC vardı, ODBC vardı, bir de TNS vardı. Oracle ATP ile bu iş değişti açıkçası. Oracle Autonomous veri tabanı ile veri tabanına bağlantı yapmak istiyorum, kod anlamında söyleyeyim ATP Database’ine bağlanırken Wallet’e ihtiyacım var. Slaytta da görüldüğü gibi Wallet kaynak dosyalarını kullanarak Oracle Bulut’ta ATP veri tabanıma bağlantımı oluşturdum. Oracle Cloud arayüzden wallet’imi indiriyorum ve veri tabanı oluştururken bir parola belirliyorum. Aynı zamanda Wallet’a da bir parola veriyorum. Sağ tarafta Client Computer var, arada Wallet Keystore’um var. Oracle ATP’nin sunduğu bu altyapı aracılığıyla tamamen güvenliği sağlanmış ve gerçekten encrypt edilmiş bir bağlantı altyapısı ile çalIşmış oluyorsunuz. Yani Oracle bunu şansa da bırakmamış, bu yapıyı aşamıyorsunuz. Her türlü böyle bağlanmak zorundasınız. Bu da Oracle’ın bu işi, veri güvenliğini ne kadar ciddiye aldığını gösteriyor.
Öncesinde biz Oracle WebLogic üzerinden çok rahat “next next” deyip “username, pasword, service ID” bilgilerini girerek datasource bağlantısı yapabiliyorduk. Ama şuan öyle değil. Görselden de görüleceği üzere Wallet’ın içeriğinde “Truststore.jks” Java Keystore dediğimiz host bilgilerini giriyoruz, sonra tnsnames.ora bilgisi var, sqlnet.ora bilgisi var, ojdbc.properties, keystore, wallet ve yine cwallet bilgisi var. Öncelikle bu bilgileri giriyoruz ama bu da yeterli değil. Bir de properties doyası var “properties” doyasına bu bilgileri tekrardan, wallet’ın parolasıyla beraber Java JDBC client katmanında belirtiyorum. Belirttikten sonra artık Oracle ATP database’e bağlanabiliriz. Siyah alanda da gördüğünüz gibi bu parametreleri gerçekten properties alanında belirtmemiz lazım ki Oracle ATP veri tabanına bağlanabilelim.
IT Uzman Personel Yetiştirme
Erdem Gürbüz:
Seni sektörde herkes biliyor, tanıyor. Senin bir duruşun var. Bir çok ortak arkadaşımız var, senin hakkında konuştuğumuzda, “Fevzi; sıfırdan bir adamı alır yetiştirir ve sektöre kazandırır” diye bahsederler. Ben de bu özelliğini biliyorum ve oldukça takdir ediyorum. Genç arkadaşlara, yeni mezunlara , orta katman ekibine, uygulama geliştirmeye yönelik yazılım geliştiricilere tavsiyelerin nelerdir?
Fevzi Korkutata:
IT teknolojilerinde ülkemizin ihtiyaç duyduğu yetişmiş personel açığının giderilmesine katkıda bulunmak için, elimden geldiğince taşın altına elimi koyarak, desteklemeye ve pratiğe dökmeye çalışıyorum.
Çok teşekkür ediyorum gerçekten. Son zamanlarda eskisi kadar eğitim veremiyorum ama şimdiye kadar oldukça fazla ve çok ciddi eğitimler verdim. Hem orta katman, hem JAVA programlama dili üzerine eğitimler, seminerler, konferanslar, workshoplar… vb. verdim ve vermeye de devam ediyorum. Tabi ki de sektöre yeni kişiler kazandırmayı, kutsal bir görev gibi görüyorum aynı zamanda ülkem Türkiye için de vatani görev şeklinde bakıyorum. Yazılım geliştiricilere veya yazılımcı olmak isteyenlere şu tavsiyede bulunabilirim. Ne olursa olsun bir programlama dilini çok iyi bilmek lazım, iyi değil çok iyi. Her teknolojiyi, her programlama dilini biraz biraz bilmeye gerek yok. Şimdilerde yazılım kariyerine başlayanlar veya yeni mezunlar farklı zorluklar yaşayabilir. Çünkü eskiden monolit yani tek tip programlama vardı, tek programlama dili kariyerinize yön vermek için yeterli gelirdi. Ama şimdilerde yeterli gelmiyor. O yüzdendir ki “coder” olmak gerekiyor.
“Coder” olmak için de benim en büyük tavsiyem, her şeyi geçtim Java olur, Dot.Net olur… Bir kere hiç dallanma, şöyle bir iki seneni ver. Bütün detaylarıyla bir programala dilini “Object Oriented Programlama” ve “Aspect Oriented Programlama” yaklaşımlarıyla öğrenmek lazım. Bu ikisini çok iyi gerçeklemeniz lazım. Bu iki öğrenimi tamamlamadan başka teknolojilere bakmayın, çünkü ortaya profesyonel ve uzun vadeli bir şey çıkmıyor. Bir proglama dilini profesyonel bir şekilde tam bilin, inanın bir sonraki programlama dilini öğrenmek çok daha kolay olacaktır. Bu işletim sistemleri için de geçerli, veri tabanları için de geçerli. Ondan sonra kıyaslama veya çağrışım yapıp diğer programlama dillerini de kolayca çözeceksiniz. Yazılımda algoritmayı, planlamayı, temeli iyi bilmek lazım. Doğru bir altyapı temel edinmeden, ezbere veya tekrara dayalı metodlar ile bu işe başlamamak gerekiyor ki daha sonra ortaya çıkaracağınız sonuçların sağlamasını da yapabilesiniz.
Meetup.com’da Oracle Developer Meetup İstanbul grubumuz var. Düzenli şekilde etkinlik yapıyoruz. Burada güncel açık kaynak kod teknolojileri ve güncel Oracle teknolojilerini paylaşıyoruz.
Daha önce yaptığımız seminerlerde bahsettiğim birkaç teknoloji ve yaklaşımdan bahsetmek gerekirse; bakın Oracle’ın açık kaynak kod mikroservis framework’ü olan “Helidon.io” var. Henüz Java’yı tam olarak öğrenmemiş iseniz Helidon’a girmeyin tabi ki de. Ama ben artık Java’yı iyi biliyorum diyorsanız, özgüveniniz yerinde ise “ben mikro servis” dünyası tasarlamak istiyorum diyebilirsiniz, bu sayede sipariş sistemi ayrı olsun, kargo sistemi ayrı olsun, veri tabanı seçimleri için çoklu model veya veri tabanı ürünü kullanayım.. vb. çözümler üretebilirsiniz.
Oracle’ın daha öncesinde bahsettiğim GraalVM projesi var. Bütün proses Virtual Machine’leri yöneten bir VM var artık. Bu proje gerçekten çok umut vadediyor. Yine Jakarta EE kesinlikle takip edilmesi gereken bir proje. Artık Oracle tarafından Eclipse’e devredildi, Oracle da destekliyor. Oracle bulutta “Container Engine for Kubernetes” altyapısı sayesinde çok rahat bir iki komutla “kubectl” deyip Oracle Cloud’a web uygulamanızı saniyeler içinde deploy edip trafiğe alabilirsiniz. Mümkün olduğunca “Cloud Native” teknolojileri benimseyip, teknolojinin güncelliğini çalıştığınız firmalara veya kurumlara uygulamak bu işin en büyük motivasyon kaynağı olduğunu düşünüyorum.
IT teknolojilerinde ülkemizin ihtiyaç duyduğu yetişmiş personel açığının giderilmesine katkıda bulunmak için, elimden geldiğince taşın altına elimi koyarak, desteklemeye ve pratiğe dökmeye çalışıyorum. Bu konu oldukça hassas ve farklı. Sadece söylem ile ya da para harcayarak, lüks eğitim imkanları, altyapıları sağlayarak; analitik düşünebilen, çözüm üretebilen IT mühendisleri yetiştiremezsiniz. Dört yıl üniversite eğitimi almış yeni mezun bilgisayar mühendisi olan bir kişiyi dahi kendi kendine öğrenmeye bıraktığınızda sadece bir noktaya kadar ilerleyebiliyor, bir yerden sonra kaotik internet kütüphanesinde kaybolup gidebiliyor. Çünkü bir şey öğrenmeye calışırken; sosyal medyada, YouTube’da, orda burda insanlar sürekli kendi bildiklerini satmaya, pazarlamaya çalıştıkları için bu yolda ilerleyenlerin kafaları sürekli karışıyor. Örneğin bu teknolojiyi öğren çok fazla para kazanırsın, şu programlama dilini öğren her yerde mumla aranırsın gibi… Kişi tam bir şey öğrenmeye başlamışken ve güzel güzel ilerlerken bu tarz yorumlar ile karar değiştirip o tarafa yöneliyor ve her şeyden biraz biraz öğrenip, hiçbir şey bilmemiş hale geliyor. Kendi ekibimde ve çalıştığım kişilerde bu durumun yaşanmamasi için; eğitim metodolojileri geliştiriyorum, kısa vadeli 2–4 aylık hızlandırılmış yoğun staj programları, 1 yıllık, 2 yıllık teknik IT gelişim kariyer planları tasarlıyorum ve bunları uygulamaya döküyorum. Eğitim materyalleri hazırlayıp yazılım geliştirici, uygulama, network, storage, sanallaştırma, işletim sistemi, veri tabanı, devops… vb. uzmanlıklarına göre yol haritaları çıkartıp, bu yol haritasına göre ilerletiyorum. Bu sayede kişi gerçek manada hem IT temeli elde ediyor, hem de bir alan seçip o alanda ileri seviye uzman olabiliyor. Yaptığı işi ezberden değil de, bilerek ve isteyerek icra etmiş oluyor.
Bunoktada çoğu zaman büyük şirketlerde çalışan işe alım yöneticileri emeğimize saygı göstermese de, yeni mezunları yetiştirdikten sonra vefasız davransalar da, yaptığımız personel yetiştirme yatırımımızın karşılığını alamasak da, motivasyonumuz kırılsa da… Günün sonunda insanımız kazanıyor, ülkemiz kazanıyor diyerek yoluma devam ediyorum. “İyilik et denize at, balık bilmezse Halik bilir” olarak değerlendiriyorum. O bakımdan bu anlayış ile ekibim ile projeler üretmeye devam edeceğim.
Kapanış Görseli
İzlemeyi ve Dinlemeyi Tercih Edenler için YouTube Kanalımda Yayında
Not: Makale yazısı ile YouTube videosu arasında farklılar bulunmaktadır. Makale yazısı, IT yazı diline “Fevzi Korkutata” tarafından 26 Kasım 2022 tarihinde yeniden derlenmiştir.