Oracle kurumsal ihtiyaçlar için geliştirdiği çözümlerin tamamını orta katman mimarisine taşıyarak hem yönetim hem de geliştirme sürecini basitleştirmeyi başarmıştır. Bu çözümlerden biri de Servis Odaklı Mimari'ye uygun olarak uygulama geliştirmeye olanak sağlayan Oracle SOA Suite ürünüdür. Servis Odaklı Mimari (SOM) uygulamayı tekrar kullanılabilir, tek başına katma şirket için bir katma değer yaratan, açık standartlar üzerine kurulu ve biri biri ile gevşek bağlı servisler olarak inşa etmemizi tavsiye ediyor. Her mimari kalıpta olduğu gibi burada da SOM servislerin nasıl gerçeklenmesi gerektiği konusunda herhangi bir yönerge içermiyor. Ancak günümüzde SOM'un servislerini, SOAP/XML web servisleri olarak gerçekleştiriyoruz. XML Web servislerinde servisin arayüzü WSDL (Web Services Description Language) dokümanında XML ve XML Schema kullanarak, herhangi bir programlama dilinden ya da platformdan bağımsız olarak tanımlanır. WSDL servisin tanımını iki bölüme ayırır:
Soyut arayüz, servis tarafından desteklenen işlemler ve parametreleri, soyut veri tipleri gibi servise ilişkin genel özellikleri tanımlar. Bu tanımlamalar ağ adresi, ağ protokolü, veri gösterimi gibi bilgisayar ağ parametrelerinden tamamen bağımsızdır.
Gerçeklemeye ilişkin tanımlamalar, soyut arayüz tanımlarını gerçek ağ adresi, ağ protokolü ve gerçek veri tipleri ile eşleştirir. Hem soyut arayüz hem de katı gerçekleme tanımları XML elemanları aracılığı ile verilir. Sonuç olarak, WSDL dokümanı, http://schemas.xmlsoap.org/wsdl isim uzayında tanımlı XML Schema dokümanında tanımlı elemanlar kullanılarak oluşturulmuş bir XML dokümanıdır. XML Web servislerinde servisi çağıran istemci ile servisi gerçekleyen servis sağlayıcı arasında bir sözleşme işlevi görüyor. İstemci ile servis sağlayıcı arasındaki iletişim XML tabanlı bir mesajlaşma protokolü olan SOAP (Simple Object Access Protocol) aracılığı ile gerçekleşmektedir.
WSDL dokümanındaki XML Schema bu XML mesajın içeriğinin geçerliliğini sınamak için bir dizi kısıt içermektedir. Servis sağlayıcı WSDL ile soyut olarak tanımlanan servis arayüzünü herhangi bir platformda herhangi bir programlama dili kullanılarak gerçeklenebilir: Java EE, Spring WS, .Net. Servis sağlayıcı istemcinin servise ulaşabilmesi için WSDL dokümanını bir kayıt sunucusu olan UDDI sunucusuna kaydeder. İstemci de UDDI (Universal Description, Discovery, and Integration) üzerinde servisin arayüzünün tanımına, WSDL dokümanına ulaşır. UDDI, WSDL kayıtlarını tutmak dışında sarı sayfalara benzer şekilde, şirket sınıflandırması, şirket bilgileri gibi bir çok farklı türde bilgiyi saklamak üzere tasarlanmış, olgun, kendini ispat etmiş bir teknolojidir. Ancak ağır sıklet bir çözüm sunmaktadır. İstemci, Servis Sağlayıcı ve Kayıt Sunucusu arasındaki tüm haberleşme SOAP protokolü tarafından düzenlenir.
Son yıllarda web uygulamalarında servislere erişim akıllı telefonlar ve tablet gibi mobil cihazlardan gerçekleşmektedir. Yine Nesnelerin İnterneti (Internet of Things, IoT) uygulamaları için daha ölçeklenebilir ve hafif sıklet bir mimari çözüme ihtiyaç bulunmaktadır. Bu amaçla uygulamaları tümleştirmek için SOAP Web Servislerine alternatif bir çözüm olarak REST mimarisinde servisler gerçekleştiriyoruz. REST mimarisinde kaynak farklı şekillerde kodlanabilir. Hatta aynı kaynağa erişen farklı iki istemciye farklı formatta sunum yapılabilir: birine JavaScript Object Notation (JSON), diğerine XML gibi. Oracle SOA Suite 12c'de servisler istenirse REST Web Servisi istenirse de SOAP Web Servisi olarak tasarlanabilir. Benzer şekilde SOA tümleşik uygulamaları REST ve SOAP Web Servislerini tüketebilirler.
Kuruluma Hazırlık
Kurulum için öncelikli olarak gerekli olan kurulum dosyalarını Oracle'ın web sitesinden indirmemiz gerekiyor. İndireceğimiz kurulum dosyaları üretim ortamı için olan sürümleri kapsayacaktır:
- fmw_12.1.3.0.0_infrastructure.jar
- fmw_12.1.3.0.0_soa.jar
Bu nedenle dosyaları https://edelivery.oracle.com adresli Oracle'ın web sitesinden indireceğiz:
|
https://edelivery.oracle.com |
|
Kullanıcı adı ve parola girdikten sonra onaylamanız gereken yasal uyarı |
|
Oracle SOA Suite for Oracle Middleware ürününü Linux x86-64 platformun için seçin |
|
Oracle SOA Suite for Oracle Middleware 12.1.3 sürümünü seçin |
|
Lisans şartlarını sonuna kadar okuyup, onaylayın! |
|
V44416-01.zip ve V44420-01.zip |
SOA kurulumu için uygulamanın verilerini kalıcı olarak saklamak üzere Oracle 12c, MS SQL, DB2 ya da MySQL veritabanlarından birine ihtiyaç var. Üretim ortamı için Oracle 12c veritabanını kullanmanız uygun olur.
Orta Katman Altyapı Kurulumu
Önce Weblogic 12c kurulumunu gerçekleştiriyoruz:
/home/oracle>java -version
java version "1.7.0_55"
Java(TM) SE Runtime Environment (build 1.7.0_55-b13)
Java HotSpot(TM) 64-Bit Server VM (build 24.55-b03, mixed mode)
/home/oracle>cd /install/soa/
/install/soa>ls
fmw_12.1.3.0.0_infrastructure.jar fmw_12.1.3.0.0_soa.jar
/install/soa>hostname
host01.example.com
/install/soa>java -d64 -jar fmw_12.1.3.0.0_infrastructure.jar
Launcher log file is /tmp/OraInstall2016-01-06_12-14-30AM/launcher2016-01-06_12-14-30AM.log.
Extracting files....................................................................
Starting Oracle Universal Installer
Checking if CPU speed is above 300 MHz. Actual 2992.654 MHz Passed
Checking monitor: must be configured to display at least 256 colors. Actual 16777216 Passed
Checking swap space: must be greater than 512 MB. Actual 10479056 MB Passed
Checking if this platform requires a 64-bit JVM. Actual 64 Passed (64-bit not required)
Checking temp space: must be greater than 300 MB. Actual 4400 MB Passed
Preparing to launch the Oracle Universal Installer from /tmp/OraInstall2016-01-06_12-14-30AM
Log: /tmp/OraInstall2016-01-06_12-14-30AM/install2016-01-06_12-14-30AM.log
|
Kurulum karşılama ekranı |
|
Oracle Home dizininin seçimi yapılır. Oracle Home yazılımın hangi dizine kurulacağını tanımlar. |
|
Üretim ortamı için örnek uygulamalara ihtiyaç bulunmuyor. |
|
Kurulum yapılacak platformun minimum şartları sağlayıp sağlamadığının kontrolü yapılıyor. |
|
Oracle Support hesabı varsa tanımı burada yapılır. |
|
Bu örnek kurulumda Oracle Support hesabı tanımı yapılmayacak. |
|
Oracle Support hesabı tanımı yapılmadığı uyarısı alındı. |
|
Sessiz kurulum için tüm bu seçimleri bir dosyaya almak uygun olur. |
|
Seçimler bir dosyada saklanır: install_fmw_infra.rsp |
|
Kurulum başladı |
|
Kurulum ilerliyor. |
|
Kurulum tamamlanmak üzere. |
|
|
Kurulum tamamlandı |
|
8. Adım: kurulum rapor ekranı |
SOA Suite 12c Kurulumu
Şimdi SOA Suite kurulumunu gerçekleştiriyoruz:
/home/oracle>hostname
host01.example.com
/home/oracle>cd /install/soa/
/install/soa>ls
fmw_12.1.3.0.0_infrastructure.jar fmw_12.1.3.0.0_soa.jar install_fmw_infra.rsp
/install/soa>java -d64 -jar fmw_12.1.3.0.0_soa.jar
Launcher log file is /tmp/OraInstall2016-01-06_01-07-09AM/launcher2016-01-06_01-07-09AM.log.
Extracting files....................................................
Starting Oracle Universal Installer
Checking if CPU speed is above 300 MHz. Actual 2992.654 MHz Passed
Checking monitor: must be configured to display at least 256 colors. Actual 16777216 Passed
Checking swap space: must be greater than 512 MB. Actual 10479056 MB Passed
Checking if this platform requires a 64-bit JVM. Actual 64 Passed (64-bit not required)
Checking temp space: must be greater than 300 MB. Actual 2800 MB Passed
Preparing to launch the Oracle Universal Installer from /tmp/OraInstall2016-01-06_01-07-09AM
Log: /tmp/OraInstall2016-01-06_01-07-09AM/install2016-01-06_01-07-09AM.log
|
Kurulum karşılama ekranı |
|
Oracle Home dizininin seçimi yapılır. Oracle Home yazılımın hangi dizine kurulacağını tanımlar. |
|
Sadece SOA Suite kurulumu gerçekleştirmek istiyoruz |
|
BPM Suite kurulumu, SOA Suite kurulumunu kapsar, fazladan BPM bileşenlerini içerir. |
|
|
Kurulum yapılacak platformun minimum şartları sağlayıp sağlamadığının kontrolü yapılıyor. |
|
Sessiz kurulum için tüm bu seçimleri bir dosyaya almak uygun olur. |
|
Seçimler bir dosyada saklanır: install_soa.rsp |
|
Kurulum başladı |
|
Kurulum tamamlandı |
|
Kurulum rapor ekranı |
Cluster'daki Diğer Düğümlerde Kurulum
Domain'deki diğer düğümlerde sessiz kurulum yapacağız:
/home/oracle>java -version
java version "1.7.0_55"
Java(TM) SE Runtime Environment (build 1.7.0_55-b13)
Java HotSpot(TM) 64-Bit Server VM (build 24.55-b03, mixed mode)
/home/oracle>cd /install/soa/
/install/soa>java -d64 -jar fmw_12.1.3.0.0_infrastructure.jar -silent -responseFile /practices/practice^C
/install/soa>cp /home/oracle/silent/*.rsp .
/install/soa>java -d64 -jar fmw_12.1.3.0.0_infrastructure.jar -silent -responseFile /install/soa/install_fmw_infra.rsp
Launcher log file is /tmp/OraInstall2016-01-08_10-16-15PM/launcher2016-01-08_10-16-15PM.log.
Extracting files.......................................................................................
Starting Oracle Universal Installer
Checking if CPU speed is above 300 MHz. Actual 2992.514 MHz Passed
Checking swap space: must be greater than 512 MB. Actual 10485752 MB Passed
Checking if this platform requires a 64-bit JVM. Actual 64 Passed (64-bit not required)
Checking temp space: must be greater than 300 MB. Actual 20488 MB Passed
Preparing to launch the Oracle Universal Installer from /tmp/OraInstall2016-01-08_10-16-15PM
Log: /tmp/OraInstall2016-01-08_10-16-15PM/install2016-01-08_10-16-15PM.log
Copyright (c) 1996, 2014, Oracle and/or its affiliates. All rights reserved.
Reading response file..
Starting check : CertifiedVersions
Expected result: One of enterprise-4,enterprise-5,enterprise-6,redhat-6,redhat-4,redhat-5,SuSE-11
Actual Result: enterprise-6
Check complete. The overall result of this check is: Passed
CertifiedVersions Check: Success.
Starting check : CheckJDKVersion
Expected result: 1.7.0_15
Actual Result: 1.7.0_55
Check complete. The overall result of this check is: Passed
CheckJDKVersion Check: Success.
Validations are enabled for this session.
Verifying data......
Copying Files...
You can find the log of this install session at:
/tmp/OraInstall2016-01-08_10-16-15PM/install2016-01-08_10-16-15PM.log
-----------20%----------40%----------60%----------80%--------100%
The installation of Oracle Fusion Middleware 12c Infrastructure 12.1.3.0.0 completed successfully.
Logs successfully copied to /u01/app/oraInventory/logs.
/install/soa>java -d64 -jar fmw_12.1.3.0.0_soa.jar -silent -responseFile /install/soa/install_soa.rsp
Launcher log file is /tmp/OraInstall2016-01-08_10-24-58PM/launcher2016-01-08_10-24-58PM.log.
Extracting files...............................................................
Starting Oracle Universal Installer
Checking if CPU speed is above 300 MHz. Actual 2992.514 MHz Passed
Checking swap space: must be greater than 512 MB. Actual 10485752 MB Passed
Checking if this platform requires a 64-bit JVM. Actual 64 Passed (64-bit not required)
Checking temp space: must be greater than 300 MB. Actual 18890 MB Passed
Preparing to launch the Oracle Universal Installer from /tmp/OraInstall2016-01-08_10-24-58PM
Log: /tmp/OraInstall2016-01-08_10-24-58PM/install2016-01-08_10-24-58PM.log
Copyright (c) 1996, 2014, Oracle and/or its affiliates. All rights reserved.
Reading response file..
Starting check : CertifiedVersions
Expected result: One of enterprise-4,enterprise-5,enterprise-6,redhat-6,redhat-4,redhat-5,SuSE-11
Actual Result: enterprise-6
Check complete. The overall result of this check is: Passed
CertifiedVersions Check: Success.
Starting check : CheckJDKVersion
Expected result: 1.7.0_15
Actual Result: 1.7.0_55
Check complete. The overall result of this check is: Passed
CheckJDKVersion Check: Success.
Validations are enabled for this session.
Verifying data......
Copying Files...
You can find the log of this install session at:
/tmp/OraInstall2016-01-08_10-24-58PM/install2016-01-08_10-24-58PM.log
-----------20%----------40%----------60%----------80%--------100%
The installation of Oracle Fusion Middleware 12c SOA Suite and Business Process Management 12.1.3.0.0 completed successfully.
Logs successfully copied to /u01/app/oraInventory/logs.
/install/soa>
RCU Kurulumu
SOA Suite çalışması için gerekli tüm bilgileri veri tabanında tablolarda saklar. Veritabanındaki bu tabloların yaratılması ve ilklendirilmesi için kurulumla birlikte gelen RCU (Repository Creation Unit) yazılımını kullanıyoruz:
/install/soa>hostname
host01.example.com
/install/soa>cd /u01/oracle/product/fmw/oracle_common/bin
/u01/oracle/product/fmw/oracle_common/bin>./rcu
|
Kurulum karşılama ekranı |
|
Tabloları yaratmak istiyoruz. İstenirse daha sonra veritabanı yöneticisi tarafından kullanılmak üzere tabloları yaratacak ve ilklendirecek betiklerin hazırlanması sağlanabilir. Tabloları silmek için de bu araç kullanılabilir. |
|
Veritabanı bağlantılarının girildiği ekran |
|
Veritabanı sunucusunun gereken şartları sağlayıp sağlamadığının kontrolü yapılıyor |
|
Tablo adlarının EDG ön eki ile yaratılmasını sağladık. Ön ek seçimi ile aynı veritabanında farklı amaçlarla DEV, TEST, PREPROD, PROD repository yaratılabilinir. Hem Weblogic altyapısı hem de SOA Suite için gerekli tüm tablolar seçilir. |
|
Tabloların yaratılabilmesi için gerekli kontroller yapılıyor |
|
Repository kullanıcı parolası veriliyor. Hepsi için aynı parolayı vermeyi tercih ettik. İstenirse her biri için ayrı ayrı parola tanımlanabilir |
|
Yaratılacak Tablo Alanları listeleniyor |
|
Tablo alanları yaratılmadan önce işlemde ne yapılacağının uyarı yapılıyor |
|
Tablo alanları yaratılıyor |
|
Tablo alanları yaratıldı |
|
Tablolar yaratılmadan önceki rapor ekranı |
|
Tablolar yaratılmaya başlandı |
|
Tablolar yaratılıyor, sürecin ortalarındayız |
|
Tablolar yaratılıyor, bitmek üzere! |
|
Son rapor ekranı |
Domain Kurulumu
Domain krulumu için config.sh betiğini çalıştırıyoruz:
/u01/oracle/product/fmw/oracle_common/common/bin>./config.sh
|
Domain dizinini belirliyoruz |
|
Domain'nin hangi yeteneklere sahip olacağını belirliyoruz: SOA Suite, BAM, ESS, EM, Coherence |
|
Bir önceki ekranda seçtiğimiz web uygulamalarının hangi dizine kurulumunun yapılacağına karar veriyoruz |
|
Admin yetkisindeki kullanıcıya ve parolasına karar veriyoruz |
|
Üretim ortamı için kurulum yapılacağının seçimine ve kullanılacak JDK sürümüne karar verdik |
|
RCU ile yaratılan Repository'nin yer aldığı Veri tabanının tanıtımını yapıyoruz |
|
Tanıtımını yaptığımız veritabanı erişimi denetleniyor |
|
RCU ile yaratılan veri tabanı şemaları denetleniyor |
|
Denetim başarı ile tamamlandı |
|
Domain yapılandırmasında hangi başlıkların yapılandırılacağının seçimi yapılıyor |
|
Her domain'in mutlaka ve en fazla bir tane Admin sunucusu olması gerekir. Bu sunucunun tanımı veriliyor. |
|
Admin sunucusu dışındaki diğer sunucular Yönetilen Sunucu (Manager Server) olarak isimlendirilir. Bu sunucuları uzaktan yönetmek için Düğüm Yöneticisi (Node Manager) servisi kullanılır. Düğüm Yöneticisi servisleri için kullanıcı ve parola tanımlaması yapılıyor. |
|
Yönetilen Sunucuların tanımlamaları yapılıyor: ess_server, bam_server, soa_server1, soa_server2, lbr_server |
Bu örnek domain kurulumunda, ESS sunucusu (ess_server) orta katmanda periyodik olarak çalıştırılması gereken görevlerin çalıştırılması için kullanılacaktır. BAM sunucusu iş süreçlerinin başarımını gerçek zamanlı olarak izlemek için kullanmayı planlıyoruz. İki düğümlü bir SOA kümeleme (=cluster) çözümü kurmayı planlıyoruz. Bu kümenin iki sunucusu soa_server1 ve soa_server2 düğümü olacak. Her kümeleme çözümünde bir yük dengeleyiciye ihtiyaç bulunur. Bu örnek kurulumda, yük dengeleyici olarak bir Weblogic sunucusu kullanacağız: lbr_server. Üretim ortamı için ise donanımsal bir yük dengeleyicisi kullanmak uygun olur.
|
Kümeleme tanımı yapılıyor. Yük dengeleyici için adres ve port numaraları tanımlanıyor. |
|
Kümeleme için sunucular seçiliyor: soa_server1 ve soa_server2. |
|
Yük dengeleyici yapılandırılması için sunucu seçimi yapılıyor. |
|
Coherence kümeleme çözümünde Session bilgilerini dağıtık ve her zaman erişilebilir olacak şekilde saklayacak dağıtık cep bellek (Distributed Cache) sunucusu görevini yerine getirecek. |
|
Node Manager tanımlamaları burada yapılıyor. |
|
Hangi Node Manager'ın hangi sunucuyu yöneteceğinin eşlemesi burada yapılıyor. |
|
Kümelemede son kullanıcıya hangi adres üzerinden hizmet verileceğinin tanımını bu ekrandan yapıyoruz. |
|
JMS sunucuları için mesajların saklanacağı dosyanın dizinlerinin tanımlaması bu ekranda yapılıyor |
|
Domain yaratılmaya başlanmadan için yapılacak işlemlerin ve tanımlamaların listesi bu ekranda listeleniyor |
|
Domain yaratılıyor: %36 |
|
Domain yaratılıyor: %45 |
|
Domain yaratılıyor: %55 |
|
Domain neredeyse yaratılmak üzere! |
|
Domain yaratıldı |
Domain'i diğer makinalara taşıyabilmek için pack.sh komutunu kullanarak önce Domain'in bir şablonunu alacağız. Diğer makinalarda ise unpack.sh komutunu kullanarak Domain'in diğer makinalarda da yaratılmasını sağlamış olacağız:
/u01/oracle/product/fmw/oracle_common/common/bin>./pack.sh -managed=true -domain=/u02/oracle/config/domains/edg_domain -template=~/edgdomain_template.jar -template_name=edgdomain
Diğer makinalarda bu şablondan domain'i oluşturmak için ise aşağıdaki komutu çalıştırıyoruz:
/u01/oracle/product/fmw/oracle_common/common/bin>./unpack.sh -domain=/u01/oracle/config/domains/edg_domain -overwrite_domain=true -template=~/edgdomain_template.jar -log_priority=DEBUG -log=~/edgdomain.log -app_dir=/u02/oracle/config/applications/edg_domain
Domain'in EM (Enterprise Manager) üzerinden yönetilmesi, başarımının izlenmesi ve en iyilenmesi konularını bir sonraki yazıda inceleyeceğiz.