UPLOAD

    27.9K

    Dev & Test on AWS Webinar June 2018

    Published: July 03, 2018

    AWS Turkiye Webinar Serisi. AWS'de DEV & TEST Ortamlari.

    Comments

    Dev & Test on AWS Webinar June 2018

    • 1. Slide75 TÜRKİYE @bahadirhalil halilb@amazon.com AWS’de Geliştirme & Test Haziran 2018 Halil BAHADIR – Solutions Architect Team Leader @AWScloud https://aws.amazon.com/tr/
    • 2. Bulut Yolculuğu… Bulut Yolculuğu… Diğer AWS müşterilerinin bulut yolculukları sırasında edindikleri tecrübeler Projelerinizi ivmelendirmeye yardımcı olacak en iyi praktikler AWS Bulut üzerinde ortak kullanım senaryoları ve geçiş modelleri
    • 3. AWS üzerinde Geliştirme ve Test AWS üzerinde Geliştirme ve Test Canlı olmayan ortamlardaki kullanım senaryolarında AWS faydalarını keşfedin Bulut öğrenme yolculuğunda geliştirme ve test ortamları ile çeviklik kazanın Daha fazla fayda için buluttaki otomasyon ve esnekliği deneyimleyin
    • 4. Ajanda Ajanda •Geliştirme ve test iş yükleri için neden AWS? •Geliştirme ve test iş yüklerini destekleyen AWS Servisleri •AWS üzerinde İş uygulamalarının geliştirmesi ve test edilmesi •Dev & Test Pratikleri •Daha fazla bilgi için kullanabileceğiniz kaynaklar
    • 5. Slide78 GELİŞTİRME VE TEST İŞ YÜKLERİ İÇİN NEDEN AWS?
    • 6. Slide6 GENEL KAVRAMLAR
    • 7. Slide7 GENEL KAVRAMLAR ÇOKLU KULLANIM (Uzun Süreli) TEKLİ KULLANIM (Geçici Süreli)
    • 8. Slide8 GENEL KAVRAMLAR ÇOKLU KULLANIM (Uzun Süreli) TEKLİ KULLANIM (Geçici Süreli) Sıklıkla açılıp kapanan projeler Kısa süre için gerekli ‘Golden masters’ yöntemi
    • 9. Slide9 GENEL KAVRAMLAR ÇOKLU KULLANIM (Uzun Süreli) TEKLİ KULLANIM (Geçici Süreli) Uygulama için çoklu ortam desteği Bilinen konfigürasyonların saklanması Çakışan geliştirme döngüleri
    • 10. Slide10 BULUTTA GELİŞTİRME VE TEST ÇOKLU KULLANIM (Uzun Süreli) TEKLİ KULLANIM (Geçici Süreli) Uygulama için çoklu ortam desteği Bilinen konfigürasyonların saklanması Çakışan geliştirme döngüleri Sıklıkla açılıp kapanan projeler Kısa süre için gerekli ‘Golden masters’ yöntemi
    • 11. Slide14 BULUTTA GELİŞTİRME VE TEST
    • 12. Slide82 BULUTTA GELİŞTİRME VE TEST Infrastructure as Code Belirli bir duruma hızla geçiş
    • 13. Slide81 BULUTTA GELİŞTİRME VE TEST Sınırsız esnek kapasite Infrastructure as Code İhtiyaç olduğunda istediğin kadarını al Belirli bir duruma hızla geçiş
    • 14. Slide80 BULUTTA GELİŞTİRME VE TEST İsteğe bağlı Ödeme Modeli İhtiyaç olmadığında kullanıma kapat Sınırsız esnek kapasite Infrastructure as Code İhtiyaç olduğunda istediğin kadarını al Belirli bir duruma hızla geçiş
    • 15. Slide79 BULUTTA GELİŞTİRME VE TEST Dayanıklı Depolama Gelecekte tekrar kullanma ya da referans için saklayın Sınırsız esnek kapasite Infrastructure as Code İhtiyaç olduğunda istediğin kadarını al Belirli bir duruma hızla geçiş İsteğe bağlı Ödeme Modeli İhtiyaç olmadığında kullanıma kapat
    • 16. Slide15 DEV & TEST İŞ YÜKLERİNİ DESTEKLEYEN AWS SERVİSLERİ
    • 17. Esnek Veri Merkezi Oluşturma ve Yönetme Araçları EC2 + VPC + ECS / EKS CloudFormation Esnek Veri Merkezi Oluşturma ve Yönetme Araçları AMIs, snapshots, Bootstrapping, containers Deklaratif olarak tanımlı AWS ortamları Elastic Beanstalk Altyapısı Yönetilen Standart Uygulama Ortamları
    • 18. Esnek Veri Merkezi Oluşturma ve Yönetme Araçları Esnek Veri Merkezi Oluşturma ve Yönetme Araçları AMIs, snapshots, bootstrapping Deklaratif olarak tanımlanan AWS ortamları İhtiyaçlara yönelik gerekli AWS temel özelliklerini kullanarak ortamların hazırlanması AWS Konsol ya da kod kullanarak oluşturulabilir CloudFormation şablonlarını kullanarak karmaşık ortamlarınızı yönetin ve kontrol edin Uygulama geliştirir gibi ortamların yönetim konfigürasyonlarını geliştirin Standart yönetilen Uygulama Container IDE üzerinden de kontrol ederek DEV ve TEST ortamlarının geliştiriciler tarafından yönetilmesi Özellikler üzerinden, Container’ların ihtiyaçlara göre uyarlanması
    • 19. Esnek Veri Merkezi Oluşturma ve Yönetme Araçları Esnek Veri Merkezi Oluşturma ve Yönetme Araçları AMI, snapshots, bootstrapping Deklaratif olarak tanımlanan AWS ortamları İhtiyaçlara yönelik gerekli AWS temel özelliklerini kullanarak ortamların hazırlanması AWS Konsol ya da kod kullanarak oluşturulabilir CloudFormation şablonlarını kullanarak karmaşık ortamlarınızı yönetin ve kontrol edin Uygulama geliştirir gibi ortamların yönetim konfigürasyonlarını geliştirin Standart yönetilen Uygulama Container IDE üzerinden de kontrol ederek DEV ve TEST ortamlarının geliştiriciler tarafından yönetilmesi Özellikler üzerinden, Container’ların ihtiyaçlara göre uyarlanması
    • 20. Slide19 Amazon EC2 Genel Sunucu İmajı Özelleştirilmiş yapı bloğu Tekrar kullanılabilir altın imaj hazırlamak
    • 21. Slide20 On-premise ortamların genişletilmesi Amazon VPC
    • 22. Slide21 Amazon VPC On-premise ortamların genişletilmesi
    • 23. Slide22 Amazon VPC On-premise ortamların genişletilmesi
    • 24. Slide23 Amazon VPC On-premise ortamların genişletilmesi
    • 25. Slide24 Amazon VPC On-premise ortamların genişletilmesi
    • 26. Slide87 Amazon ECS
    • 27. Slide86
    • 28. Esnek Veri Merkezi Oluşturma ve Yönetme Araçları Esnek Veri Merkezi Oluşturma ve Yönetme Araçları AMIs, snapshots, bootstrapping Deklaratif olarak tanımlanan AWS ortamları İhtiyaçlara yönelik gerekli AWS temel özelliklerini kullanarak ortamların hazırlanması AWS Konsol ya da kod kullanarak oluşturulabilir CloudFormation şablonlarını kullanarak karmaşık ortamlarınızı yönetin ve kontrol edin Uygulama geliştirir gibi ortamların yönetim konfigürasyonlarını geliştirin Standart yönetilen Uygulama Ortamlari IDE üzerinden de kontrol ederek DEV ve TEST ortamlarının geliştiriciler tarafından yönetilmesi Özellikler üzerinden, Container’ların ihtiyaçlara göre uyarlanması
    • 29. Slide26 AWS Elastic Beanstalk
    • 30. Slide27 AWS Elastic Beanstalk GO
    • 31. Slide28 AWS Elastic Beanstalk
    • 32. Slide29 AWS Elastic Beanstalk
    • 33. Slide30 AWS Elastic Beanstalk
    • 34. Slide31 AWS Elastic Beanstalk
    • 35. Slide32 AWS Elastic Beanstalk
    • 36. Slide33 AWS Elastic Beanstalk
    • 37. Slide34 AWS Elastic Beanstalk
    • 38. Esnek Veri Merkezi Oluşturma ve Yönetme Araçları Esnek Veri Merkezi Oluşturma ve Yönetme Araçları AMIs, snapshots, bootstrapping Deklaratif olarak tanımlanan AWS ortamları İhtiyaçlara yönelik gerekli AWS temel özelliklerini kullanarak ortamların hazırlanması AWS Konsol ya da kod kullanarak oluşturulabilir CloudFormation şablonlarını kullanarak karmaşık ortamlarınızı yönetin ve kontrol edin Uygulama geliştirir gibi ortamların yönetim konfigürasyonlarını geliştirin Standart yönetilen Uygulama Container IDE üzerinden de kontrol ederek DEV ve TEST ortamlarının geliştiriciler tarafından yönetilmesi Özellikler üzerinden, Container’ların ihtiyaçlara göre uyarlanması
    • 39. Slide36 CLOUDFORMATION TEMPLATE AWS CloudFormation
    • 40. Slide37 PROSEDÜR TANIMLAMA Programlanabilir BELİRLENMİŞ KONFİGÜRASYON Yığın konfigürasyonunu versiyon kontrolünde saklayın PARAMETRİK YAKLAŞIM Dinamik ve kullanıcı güdümlü yaklaşım İŞBİRLİĞİ Şablonları kolaylıkla paylaşın, çünkü sadece şablonlar sadece text dosyası Daha Fazlası: aws.amazon.com/cloudformation CLOUDFORMATION ŞABLONU
    • 41. Wordpress Uygulaması için CloudFormation Şablonu { "AWSTemplateFormatVersion" : "2010-09-09", "Description" : "AWS CloudFormation Sample Template WordPress_Multi_AZ: WordPress is web software you can use to create a beautiful website or blog. This template installs a highly-available, scalable WordPress deployment using a multi-az Amazon RDS database instance for storage. It demonstrates using the AWS CloudFormation bootstrap scripts to deploy WordPress. **WARNING** This template creates an Amazon EC2 instance, an Elastic Load Balancer and an Amazon RDS database instance. You will be billed for the AWS resources used if you create a stack from this template.", "Parameters" : { "KeyName": { "Description" : "Name of an existing EC2 KeyPair to enable SSH access to the instances", "Type": "AWS::EC2::KeyPair::KeyName", "ConstraintDescription" : "must be the name of an existing EC2 KeyPair." }, "InstanceType" : { "Description" : "WebServer EC2 instance type", "Type" : "String", "Default" : "m1.small", "AllowedValues" : [ "t1.micro", "t2.micro", "t2.small", "t2.medium", "m1.small", "m1.medium", "m1.large", "m1.xlarge", "m2.xlarge", "m2.2xlarge", "m2.4xlarge", "m3.medium", "m3.large", "m3.xlarge", "m3.2xlarge", "c1.medium", "c1.xlarge", "c3.large", "c3.xlarge", "c3.2xlarge", "c3.4xlarge", "c3.8xlarge", "c4.large", "c4.xlarge", "c4.2xlarge", "c4.4xlarge", "c4.8xlarge", "g2.2xlarge", "r3.large", "r3.xlarge", "r3.2xlarge", "r3.4xlarge", "r3.8xlarge", "i2.xlarge", "i2.2xlarge", "i2.4xlarge", "i2.8xlarge", "hi1.4xlarge", "hs1.8xlarge", "cr1.8xlarge", "cc2.8xlarge", "cg1.4xlarge"] , "ConstraintDescription" : "must be a valid EC2 instance type." }, "SSHLocation": { "Description": "The IP address range that can be used to SSH to the EC2 instances", "Type": "String", "MinLength": "9", "MaxLength": "18", "Default": "0.0.0.0/0", "AllowedPattern": "(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})/(\\d{1,2})", "ConstraintDescription": "must be a valid IP CIDR range of the form x.x.x.x/x." }, "DBClass" : { "Description" : "Database instance class", "Type" : "String", "Default" : "db.m1.small", "AllowedValues" : [ "db.t1.micro", "db.m1.small", "db.m1.medium", "db.m1.large", "db.m1.xlarge", "db.m2.xlarge", "db.m2.2xlarge", "db.m2.4xlarge", "db.m3.medium", "db.m3.large", "db.m3.xlarge", "db.m3.2xlarge", "db.r3.large", "db.r3.xlarge", "db.r3.2xlarge", "db.r3.4xlarge", "db.r3.8xlarge", "db.m2.xlarge", "db.m2.2xlarge", "db.m2.4xlarge", "db.cr1.8xlarge"] , "ConstraintDescription" : "must select a valid database instance type." }, "DBName" : { "Default": "wordpressdb", "Description" : "The WordPress database name", "Type": "String", "MinLength": "1", "MaxLength": "64", "AllowedPattern" : "[a-zA-Z][a-zA-Z0-9]*", "ConstraintDescription" : "must begin with a letter and contain only alphanumeric characters." }, "DBUser" : { "NoEcho": "true", "Description" : "The WordPress database admin account username", "Type": "String", "MinLength": "1", "MaxLength": "16", "AllowedPattern" : "[a-zA-Z][a-zA-Z0-9]*", "ConstraintDescription" : "must begin with a letter and contain only alphanumeric characters." }, "DBPassword" : { "NoEcho": "true", "Description" : "The WordPress database admin account password", "Type": "String", "MinLength": "8", "MaxLength": "41", "AllowedPattern" : "[a-zA-Z0-9]*", "ConstraintDescription" : "must contain only alphanumeric characters." }, "MultiAZDatabase": { "Default": "false", "Description" : "Create a Multi-AZ MySQL Amazon RDS database instance", "Type": "String", "AllowedValues" : [ "true", "false" ], "ConstraintDescription" : "must be either true or false." }, "WebServerCapacity": { "Default": "1", "Description" : "The initial number of WebServer instances", "Type": "Number", "MinValue": "1", "MaxValue": "5", "ConstraintDescription" : "must be between 1 and 5 EC2 instances." }, "DBAllocatedStorage" : { "Default": "5", "Description" : "The size of the database (Gb)", "Type": "Number", "MinValue": "5", "MaxValue": "1024", "ConstraintDescription" : "must be between 5 and 1024Gb." } }, "Mappings" : { "AWSInstanceType2Arch" : { "t1.micro" : { "Arch" : "PV64" }, "t2.micro" : { "Arch" : "HVM64" }, "t2.small" : { "Arch" : "HVM64" }, "t2.medium" : { "Arch" : "HVM64" }, "m1.small" : { "Arch" : "PV64" }, "m1.medium" : { "Arch" : "PV64" }, "m1.large" : { "Arch" : "PV64" }, "m1.xlarge" : { "Arch" : "PV64" }, "m2.xlarge" : { "Arch" : "PV64" }, "m2.2xlarge" : { "Arch" : "PV64" }, "m2.4xlarge" : { "Arch" : "PV64" }, "m3.medium" : { "Arch" : "HVM64" }, "m3.large" : { "Arch" : "HVM64" }, "m3.xlarge" : { "Arch" : "HVM64" }, "m3.2xlarge" : { "Arch" : "HVM64" }, "c1.medium" : { "Arch" : "PV64" }, "c1.xlarge" : { "Arch" : "PV64" }, "c3.large" : { "Arch" : "HVM64" }, "c3.xlarge" : { "Arch" : "HVM64" }, "c3.2xlarge" : { "Arch" : "HVM64" }, "c3.4xlarge" : { "Arch" : "HVM64" }, "c3.8xlarge" : { "Arch" : "HVM64" }, "c4.large" : { "Arch" : "HVM64" }, "c4.xlarge" : { "Arch" : "HVM64" }, "c4.2xlarge" : { "Arch" : "HVM64" }, "c4.4xlarge" : { "Arch" : "HVM64" }, "c4.8xlarge" : { "Arch" : "HVM64" }, "g2.2xlarge" : { "Arch" : "HVMG2" }, "r3.large" : { "Arch" : "HVM64" }, "r3.xlarge" : { "Arch" : "HVM64" }, "r3.2xlarge" : { "Arch" : "HVM64" }, "r3.4xlarge" : { "Arch" : "HVM64" }, "r3.8xlarge" : { "Arch" : "HVM64" }, "i2.xlarge" : { "Arch" : "HVM64" }, "i2.2xlarge" : { "Arch" : "HVM64" }, "i2.4xlarge" : { "Arch" : "HVM64" }, "i2.8xlarge" : { "Arch" : "HVM64" }, "hi1.4xlarge" : { "Arch" : "HVM64" }, "hs1.8xlarge" : { "Arch" : "HVM64" }, "cr1.8xlarge" : { "Arch" : "HVM64" }, "cc2.8xlarge" : { "Arch" : "HVM64" } } , "AWSRegionArch2AMI" : { "us-east-1" : {"PV64" : "ami-8e682ce6", "HVM64" : "ami-146e2a7c", "HVMG2" : "ami-7200461a"}, "us-west-2" : {"PV64" : "ami-9fc29baf", "HVM64" : "ami-dfc39aef", "HVMG2" : "ami-0b78203b"}, "us-west-1" : {"PV64" : "ami-f49089b1", "HVM64" : "ami-42908907", "HVMG2" : "ami-244b5361"}, "eu-west-1" : {"PV64" : "ami-7b3db00c", "HVM64" : "ami-9d23aeea", "HVMG2" : "ami-4d7cf03a"}, "eu-central-1" : {"PV64" : "ami-0600331b", "HVM64" : "ami-04003319", "HVMG2" : "NOT_SUPPORTED"}, "ap-northeast-1" : {"PV64" : "ami-3c87993d", "HVM64" : "ami-18869819", "HVMG2" : "ami-2e90892f"}, "ap-southeast-1" : {"PV64" : "ami-58ba910a", "HVM64" : "ami-96bb90c4", "HVMG2" : "ami-3e78526c"}, "ap-southeast-2" : {"PV64" : "ami-1500742f", "HVM64" : "ami-d50773ef", "HVMG2" : "ami-315e2a0b"}, "sa-east-1" : {"PV64" : "ami-fd9925e0", "HVM64" : "ami-af9925b2", "HVMG2" : "NOT_SUPPORTED"}, "cn-north-1" : {"PV64" : "ami-8a1d8fb3", "HVM64" : "ami-981d8fa1", "HVMG2" : "NOT_SUPPORTED"} } }, "Conditions" : { "Is-EC2-VPC" : { "Fn::Or" : [ {"Fn::Equals" : [{"Ref" : "AWS::Region"}, "eu-central-1" ]}, {"Fn::Equals" : [{"Ref" : "AWS::Region"}, "cn-north-1" ]}]}, "Is-EC2-Classic" : { "Fn::Not" : [{ "Condition" : "Is-EC2-VPC"}]} }, "Resources" : { "ElasticLoadBalancer" : { "Type" : "AWS::ElasticLoadBalancing::LoadBalancer", "Properties" : { "AvailabilityZones" : { "Fn::GetAZs" : "" }, "CrossZone" : "true", "LBCookieStickinessPolicy" : [ { "PolicyName" : "CookieBasedPolicy", "CookieExpirationPeriod" : "30" } ], "Listeners" : [ { "LoadBalancerPort" : "80", "InstancePort" : "80", "Protocol" : "HTTP", "PolicyNames" : [ "CookieBasedPolicy" ] } ], "HealthCheck" : { "Target" : "HTTP:80/wordpress/wp-admin/install.php", "HealthyThreshold" : "2", "UnhealthyThreshold" : "5", "Interval" : "10", "Timeout" : "5" } } }, "WebServerSecurityGroup" : { "Type" : "AWS::EC2::SecurityGroup", "Properties" : { "GroupDescription" : "Enable HTTP access via port 80 locked down to the load balancer + SSH access", "SecurityGroupIngress" : [ {"IpProtocol" : "tcp", "FromPort" : "80", "ToPort" : "80", "SourceSecurityGroupOwnerId" : {"Fn::GetAtt" : ["ElasticLoadBalancer", "SourceSecurityGroup.OwnerAlias"]},"SourceSecurityGroupName" : {"Fn::GetAtt" : ["ElasticLoadBalancer", "SourceSecurityGroup.GroupName"]}}, {"IpProtocol" : "tcp", "FromPort" : "22", "ToPort" : "22", "CidrIp" : { "Ref" : "SSHLocation"}} ] } }, "WebServerGroup" : { "Type" : "AWS::AutoScaling::AutoScalingGroup", "Properties" : { "AvailabilityZones" : { "Fn::GetAZs" : "" }, "LaunchConfigurationName" : { "Ref" : "LaunchConfig" }, "MinSize" : "1", "MaxSize" : "5", "DesiredCapacity" : { "Ref" : "WebServerCapacity" }, "LoadBalancerNames" : [ { "Ref" : "ElasticLoadBalancer" } ] }, "CreationPolicy" : { "ResourceSignal" : { "Timeout" : "PT15M" } }, "UpdatePolicy": { "AutoScalingRollingUpdate": { "MinInstancesInService": "1", "MaxBatchSize": "1", "PauseTime" : "PT15M", "WaitOnResourceSignals": "true" } } }, "LaunchConfig": { "Type" : "AWS::AutoScaling::LaunchConfiguration", "Metadata" : { "AWS::CloudFormation::Init" : { "configSets" : { "wordpress_install" : ["install_cfn", "install_wordpress" ] }, "install_cfn" : { "files": { "/etc/cfn/cfn-hup.conf": { "content": { "Fn::Join": [ "", [ "[main]\n", "stack=", { "Ref": "AWS::StackId" }, "\n", "region=", { "Ref": "AWS::Region" }, "\n" ]]}, "mode" : "000400", "owner" : "root", "group" : "root" }, "/etc/cfn/hooks.d/cfn-auto-reloader.conf": { "content": { "Fn::Join": [ "", [ "[cfn-auto-reloader-hook]\n", "triggers=post.update\n", "path=Resources.LaunchConfig.Metadata.AWS::CloudFormation::Init\n", "action=/opt/aws/bin/cfn-init -v ", " --stack ", { "Ref" : "AWS::StackName" }, " --resource LaunchConfig ", " --configsets wordpress_install ", " --region ", { "Ref" : "AWS::Region" }, "\n" ]]}, "mode" : "000400", "owner" : "root", "group" : "root" } }, "services" : { "sysvinit" : { "cfn-hup" : { "enabled" : "true", "ensureRunning" : "true", "files" : ["/etc/cfn/cfn-hup.conf", "/etc/cfn/hooks.d/cfn-auto-reloader.conf"]} } } }, "install_wordpress" : { "packages" : { "yum" : { "php" : [], "php-mysql" : [], "mysql" : [], "httpd" : [] } }, "sources" : { "/var/www/html" : "http://wordpress.org/latest.tar.gz" }, "files" : { "/tmp/create-wp-config" : { "content" : { "Fn::Join" : [ "", [ "#!/bin/bash\n", "cp /var/www/html/wordpress/wp-config-sample.php /var/www/html/wordpress/wp-config.php\n", "sed -i \"s/'database_name_here'/'",{ "Ref" : "DBName" }, "'/g\" wp-config.php\n", "sed -i \"s/'username_here'/'",{ "Ref" : "DBUser" }, "'/g\" wp-config.php\n", "sed -i \"s/'password_here'/'",{ "Ref" : "DBPassword" }, "'/g\" wp-config.php\n", "sed -i \"s/'localhost'/'",{ "Fn::GetAtt" : [ "DBInstance", "Endpoint.Address" ] }, "'/g\" wp-config.php\n" ]]}, "mode" : "000500", "owner" : "root", "group" : "root" } }, "commands" : { "01_configure_wordpress" : { "command" : "/tmp/create-wp-config", "cwd" : "/var/www/html/wordpress" } }, "services" : { "sysvinit" : { "httpd" : { "enabled" : "true", "ensureRunning" : "true" } } } } } }, "Properties": { "ImageId" : { "Fn::FindInMap" : [ "AWSRegionArch2AMI", { "Ref" : "AWS::Region" }, { "Fn::FindInMap" : [ "AWSInstanceType2Arch", { "Ref" : "InstanceType" }, "Arch" ] } ] }, "InstanceType" : { "Ref" : "InstanceType" }, "SecurityGroups" : [ {"Ref" : "WebServerSecurityGroup"} ], "KeyName" : { "Ref" : "KeyName" }, "UserData" : { "Fn::Base64" : { "Fn::Join" : ["", [ "#!/bin/bash -xe\n", "yum update -y aws-cfn-bootstrap\n", "/opt/aws/bin/cfn-init -v ", " --stack ", { "Ref" : "AWS::StackName" }, " --resource LaunchConfig ", " --configsets wordpress_install ", " --region ", { "Ref" : "AWS::Region" }, "\n", "/opt/aws/bin/cfn-signal -e $? ", " --stack ", { "Ref" : "AWS::StackName" }, " --resource WebServerGroup ", " --region ", { "Ref" : "AWS::Region" }, "\n" ]]}} } }, "DBSecurityGroup": { "Type": "AWS::RDS::DBSecurityGroup", "Condition" : "Is-EC2-Classic", "Properties": { "DBSecurityGroupIngress": { "EC2SecurityGroupName": { "Ref": "WebServerSecurityGroup" } }, "GroupDescription": "database access" } }, "DBEC2SecurityGroup": { "Type": "AWS::EC2::SecurityGroup", "Condition" : "Is-EC2-VPC", "Properties" : { "GroupDescription": "Open database for access", "SecurityGroupIngress" : [{ "IpProtocol" : "tcp", "FromPort" : "3306", "ToPort" : "3306", "SourceSecurityGroupName" : { "Ref" : "WebServerSecurityGroup" } }] } }, "DBInstance" : { "Type": "AWS::RDS::DBInstance", "Properties": { "DBName" : { "Ref" : "DBName" }, "Engine" : "MySQL", "MultiAZ" : { "Ref": "MultiAZDatabase" }, "MasterUsername" : { "Ref" : "DBUser" }, "MasterUserPassword": { "Ref" : "DBPassword" }, "DBInstanceClass" : { "Ref" : "DBClass" }, "AllocatedStorage" : { "Ref" : "DBAllocatedStorage" }, "VPCSecurityGroups": { "Fn::If" : [ "Is-EC2-VPC", [ { "Fn::GetAtt": [ "DBEC2SecurityGroup", "GroupId" ] } ], { "Ref" : "AWS::NoValue"}]}, "DBSecurityGroups": { "Fn::If" : [ "Is-EC2-Classic", [ { "Ref": "DBSecurityGroup" } ], { "Ref" : "AWS::NoValue"}]} } } }, "Outputs" : { "WebsiteURL" : { "Value" : { "Fn::Join" : ["", ["http://", { "Fn::GetAtt" : [ "ElasticLoadBalancer", "DNSName" ]}, "/wordpress" ]]}, "Description" : "WordPress Website" } } } Wordpress Uygulaması için CloudFormation Şablonu https://s3-us-west-1.amazonaws.com/cloudformation-templates-us-west-1/WordPress_Multi_AZ.template
    • 42. AWS Geliştirme Araçları CodeCommit CodeBuild AWS Geliştirme Araçları Yönetilen Versiyon Kontrol, Esnek GIT sunucu ortamı, diğer AWS servisleri ile tam entegre CodePipeline CI / CD Servisi Yönetilen build servisi, ihtiyaca göre ölçeklenebilir CodeDeploy Her türlü AWS ya da On-Prem ortamlara otomatik deployment
    • 43. Slide40 AWS ÜZERİNDE İŞ UYGULAMALARININ GELİŞTİRİLMESİ VE TEST EDİLMESİ
    • 44. Slide41 Doğrudan AWS Bulut’a yazılım kurulumunu ya da hazır konfigürasyonu yapılmış AWS Marketplace’den imaj kullanımı Microsoft SQL Server, Microsoft SharePoint, Microsoft Exchange, SAP HANA, SAP HANA One, Oracle, PeopleSoft, IBM DB2, IBM WebSphere ve çok daha fazla ürün ve ürün ailesi Lisans taşınabilirliği, mevcut lisanslarınızı AWS Buluta taşıyabilirsiniz. Detaylar için ilgili AWS web sayfalarına bakabilirsiniz aws.amazon.com/microsoft aws.amazon.com/oracle aws.amazon.com/sap aws.amazon.com/ibm
    • 45. Slide42 COMMON DEV & TEST PATTERNS
    • 46. Frameworks & Environments Frameworks & Environments Source Control Amazon EC2 to run popular source control systems, integrate with GitHub or use AWS CodeCommit Project Management Add integrated project management and issue tracking applications from the AWS Marketplace Workstations Provide standard build developer/test workstations with Amazon WorkSpaces CI/Build Servers Use EC2 instances or AWS CodeBuild, CodePipeline, etc. as continuous integration and build servers
    • 47. Slide44 Pattern KAYNAK KOD DEPOSU DNS SÜREKLİ ENTEGRASYON SUNUCUSU PROJE YÖNETİM ARACI SUNUCUSU BUILD SUNUCUSU
    • 48. Slide45 AWS Marketplace
    • 49. Slide46 Pattern CLOUDFORMATION ŞABLONU
    • 50. Slide89 Pattern Docker Containers
    • 51. Ölçeklenebilir Test Ortamları Ölçeklenebilir Test Ortamları Birim & Regresyon Belli bir zaman kesitinde dikey genişleyen ve paralel çalışan birim ve regresyon test planlarını çalıştırma Yük & Performans Spot marketten alınan EC2 sunucularını kullanarak yük ve performans testlerini otomatik genişleyen uygulamalar üzerinde çalıştırma A/B Çoklu replike yığınları kullanarak A/B testlerin çalıştırılması Güvenlik Agresif güvenlik testleri için ortamların oluşturulması
    • 52. Paralel Test Çalıştırma Paralel Test Çalıştırma 100 saat için 1 sunucu == 1 saat için 100 sunucu
    • 53. Slide49 A/B Testing
    • 54. Slide50 A/B Test
    • 55. Slide51 Yük Testi
    • 56. Slide52 Yük Testi
    • 57. Slide53 Yük Testi
    • 58. Slide54 Yük Testi
    • 59. Slide55
    • 60. Slide56 2.4 MİLYON OYUNCU SİMÜLASYONU AMAZON EC2 SUNUCULARI KULLANARAK
    • 61. Slide93 BULUTTA GELİŞTİRME VE TEST Dayanıklı Depolama Gelecekte tekrar kullanma ya da referans için saklayın Sınırsız esnek kapasite Infrastructure as Code İhtiyaç olduğunda istediğin kadarını al Belirli bir duruma hızla geçiş İsteğe bağlı Ödeme Modeli İhtiyaç olmadığında kullanıma kapat
    • 62. Geliştirme Ortamı: CPU Kullanım/Zaman Geliştirme Ortamı: CPU Kullanım/Zaman
    • 63. Geliştirme Ortamı: CPU Kullanım/Zaman Auto-scaling Zamana gore Auto-scaling Zamana gore Geliştirme Ortamı: CPU Kullanım/Zaman
    • 64. Geliştirme Ortamı: CPU Kullanım/Zaman 46% Tasarruf Geliştirme Ortamı: CPU Kullanım/Zaman
    • 65. Slide94 BULUTTA GELİŞTİRME VE TEST Dayanıklı Depolama Gelecekte tekrar kullanma ya da referans için saklayın Sınırsız esnek kapasite Infrastructure as Code İhtiyaç olduğunda istediğin kadarını al Belirli bir duruma hızla geçiş İsteğe bağlı Ödeme Modeli İhtiyaç olmadığında kullanıma kapat
    • 66. Dayanıklı Depolama Dayanıklı Depolama AMI (Sunucu imajları) Uygulamanın her bir sürüm döngüsü için AMI kataloğu oluşturun Amazon S3’de saklayın Şablonlar Her bir uygulama versiyonu için altyapı şablonlarını versiyon kontrol altına alın Amazon S3’de saklayın Snapshot’lar Gerekli olduğunda sunucularla eklenmek üzere, üzerinde veri setleri olan disk imajlarını oluşturun Amazon S3’de saklayın
    • 67. Dayanıklı Depolama Dayanıklı Depolama AMI (Sunucu imajları) Uygulamanın her bir sürüm döngüsü için AMI kataloğu oluşturun Amazon S3’de saklayın Şablonlar Her bir uygulama versiyonu için altyapı şablonlarını versiyon kontrol altına alın Amazon S3’de saklayın Snapshot’lar Gerekli olduğunda sunucularla eklenmek üzere, üzerinde veri setleri olan disk imajlarını oluşturun Amazon S3’de saklayın İstenilen uygulama versiyonuna geri dönmeyi ya da ortamı tekrar oluşturmayı sağlar
    • 68. Slide64 ÖZET
    • 69. Slide65 Bulut, yazılım geliştirmeyi ve test etmeyi kolaylaştırır Bulutun sağladığı esnekliği kullanarak, ciddi anlamda tasarruf sağlanır AWS ortamların oluşturulması ve yönetilmesi için araçlar sağlar, böylece operasyonel işinizi kolaylaştırır Bulut, geleneksel altyapının ötesinde, ölçeklenebilir ve hızlı operasyon sağlar 1 2 3 4
    • 70. Slide66 DAHA FAZLA BİLGİ İÇİN GEREKLİ KAYNAKLAR
    • 71. Slide85 aws.amazon.com/dev-test/
    • 72. AWS Eğitim & Sertifikasyon Sertifikasyon aws.amazon.com/certification Deneme Ortamları aws.amazon.com/training/ self-paced-labs Servisleri deneyimleyin, yeni kabiliyetler edinin, AWS teknolojilerini ve yetkinliklerini kullanın aws.amazon.com/training Eğitim AWS platformundaki yetkinlikleriniz ve deneyimlerinizi onaylatın AWS ile esnek, ölçeklenebilir, verimli uygulamaların tasarımı ve operasyonu için teknik yetkinliklerinizi geliştirin AWS Eğitim & Sertifikasyon
    • 73. Slide73 TÜRKİYE AWS’de Depolama & Yedekleme Temmuz 2018 Gelecek Webinar
    • 74. Slide95 TÜRKİYE @bahadirhalil halilb@amazon.com TEŞEKKÜRLER !! Halil BAHADIR – Solutions Architect Team Leader @AWScloud https://aws.amazon.com/tr/