technology radar nov `15

Transkript

technology radar nov `15
TECHNOLOGY RADAR NOV ‘15
TEKNOLOJİ RADARI KAS‘15
Our thoughts on the technology and
trends that are shaping the future
Geleceği şekillendiren eğilimler ve teknoloji
üzerine görüşlerimiz
thoughtworks.com/radar
YENİLİKLER
Bu sayıda öne çıkan başlıklar şunlar:
DOCKER KONTEYNIR EKOSİSTEMİNDE PATLAMAYI TETİKLEDİ
Docker örneğinde görülen konteynırlaştırma, sayıları giderek artan birçok kuruluşta çok popüler hale geldi.
Kuruluşların içinde ve kuruluşlar arasında ilgi çok çeşitli seviyelerde bulunuyor; bizim tavsiyemiz ise Değerlendir ile
Benimse arasında değişiyor. Ekosistem (araçlar, platformlar ve teknikler) giderek büyüyor, olgunlaşıyor ve ilginin
artışını daha da hızlandırıyor. İlgili okuyucular radarımızın her sayfasında, bağımlılıkları yönetmek için kullanılan bir
geliştirme aracı olan Docker’dan, konteynırları kendi “ölçeklendirme” birimleri olarak kullanan Mesos ve AWS ECS’ye
kadar uzanan çeşitli ilgili başlıklarda yorumlar okuyacaklar.
MİKROSERVİSLER VE İLGİLİ ARAÇLARIN POPÜLERLİĞİ ARTIYOR
Bu mimari tarza yönelik ilgi hız kesmeden devam ederken, bu ilgi aynı zamanda bu tarzı destekleyen araç ve
tekniklere yönelik ilgiyi de artırıyor. Konteynırlaştırma gibi DevOps uygulamaları, CI/CD aracınızda programlama
yapmanın tehlikeleri gibi konularda alınan dersler, servis keşif araçlarının olgunlaşması ve benzerleri. Yakın
gelecekte bu alanda büyüme ve olgunlaşmanın daha da artmasını umuyoruz.
JAVASCRIPT ARAÇLARI KAOTİK OLMAYA DEVAM EDİYOR
JavaScript araçları alanındaki çalkalanmaya daha önce dikkat çekmiştik ancak bu topluluk giderek yatışıyor ve
bazı ortak uygulamalar etrafında bütünleşiyor. Ekipler inşa araçları ve paket yönetimi için en iyi kombinasyonları
keşfediyor (hiçbir araç kullanmamak da bunlar arasında) ve ekipler arasında, etkili uygulamalar konusundaki
anlaşmazlıkları daha az duyuyoruz.
GÜVENLİK HERKESİN SORUNU
Güvenlik, yazılım geliştirme döngüsü içindeki her pozisyonu benzersiz bir şekilde etkileyen bir sorundur. Geçen
Teknoloji Radar’da güvenlik alanındaki gelişmelere dikkat çekmiştik ve ekiplerin SDLC’lerine güvenlik uygulamaları
yerleştirmeye başladıklarını memnuniyetle görüyoruz. Bu sayıda hata bulma ödülleri, tehdit modelleme, HSTS, TOTP
ve Let’s Encrypt gibi inovatif yaklaşımları vurguluyoruz. Bu alandaki cazibenin devam edeceğini umuyoruz.
KATKIDA BULUNANLAR
Teknoloji Radarı aşağıda isimleri listelenen ThoughtWorks Teknoloji Danışma Kurulu tarafından hazırlanmıştır.
Rebecca Parsons (CTO)
Claudia Melo
Ian Cartwright
Rachel Laycock
Martin Fowler(Baş Bilimadamı)
Dave Elliman
James Lewis
Sam Newman
Anne J Simmons
Erik Doernenburg
Jonny LeRoy
Scott Shaw
Badri Janakiraman
Evan Bottcher
Mike Mason
Srihari Srinivasan
Brain Leke
Hao Xu
Neal Ford
Thiyagu Palanisamy
© Kasım 2015, ThoughtWorks, Inc. Tüm hakları saklıdır.
TEKNOLOJİ RADARI KASIM 2015 | 1
WHAT’S NEW?
Here are the themes highlighted in this edition:
DOCKER INCITES CONTAINER ECOSYSTEM EXPLOSION
Containerization, exemplified by Docker, is wildly popular in a growing number of organizations. The interest varies
widely across and within organizations; our recommendations range from Assess to Adopt. The ecosystem (tools,
platforms and techniques) is growing and maturing, further accelerating interest. Astute readers will note related
topics across our radar, ranging from Docker as a development tool for managing dependencies to large cloud
platforms such as Mesos and AWS ECS that use containers as their “unit of scaling”.
MICROSERVICES AND RELATED TOOLS GAIN IN POPULARITY
Interest continues unabated around this architectural style, which transitively boosts interest in supporting tools
and techniques: DevOps practices like containerization, lessons learned such as the perils of programming in your
CI/CD tool, the maturity of service discovery tools, and so on. We expect to see even more growth and maturity in
this space in the near future.
JAVASCRIPT TOOLING SETTLES TO MERELY CHAOTIC
We have highlighted the churn in the JavaScript tool space before, but the community is gradually calming and
coalescing around some common practices. Teams are discovering the best combination (including none) for build
tools and package management, and we hear less disagreement across teams on effective practices.
SECURITY IS EVERYBODY’S PROBLEM
Security is an issue that uniquely affects all roles across the software development lifecycle. We highlighted
improvement in the security space in the last Technology Radar, and we’re pleased to see teams baking security
practices into their SDLC. In this edition we also highlight innovative approaches such as bug bounties, threat
modelling, HSTS, TOTP and Let’s Encrypt. We hope traction continues to improve in this space.
CONTRIBUTORS
The Technology Radar is prepared by the ThoughtWorks Technology Advisory Board, comprised of:
Rebecca Parsons (CTO)
Claudia Melo
Ian Cartwright
Rachel Laycock
Martin Fowler(Chief Scientist)
Dave Elliman
James Lewis
Sam Newman
Anne J Simmons
Erik Doernenburg
Jonny LeRoy
Scott Shaw
Badri Janakiraman
Evan Bottcher
Mike Mason
Srihari Srinivasan
Brain Leke
Hao Xu
Neal Ford
Thiyagu Palanisamy
© November 2015, ThoughtWorks, Inc. All Rights Reserved.
TECHNOLOGY RADAR NOVEMBER 2015 | 1
TEKNOLOJİ RADARI HAKKINDA
ThoughtWorks çalışanları için teknoloji bir tutkudur. Teknoloji üretiyoruz, araştırmalar ve deneyler yapıyoruz,
teknolojiyi açık kaynak olarak sunuyoruz, teknoloji hakkında yazılar yazıyoruz ve herkes için teknolojiyi geliştirmek
amacıyla sürekli çalışıyoruz. Hedefimiz, yazılımda mükemmeliyeti savunmak ve BT alanında devrim yapmaktır.
Bu misyon doğrultusunda ThoughtWorks Teknoloji Radarı’nı çıkarıp paylaşıyoruz. Radarı, ThoughtWorks’teki üst
düzey teknoloji liderlerinden oluşan ThoughtWorks Teknoloji Danışma Kurulu hazırlıyor. Kurul sık sık toplanarak,
ThoughtWorks’ün küresel teknoloji stratejisini ve sektörümüzü ciddi olarak etkileyen teknoloji trendlerini tartışıyor.
Radar, Teknoloji Danışma Kurulunun bu tartışmalarını CIO’lardan geliştiricilere kadar uzanan geniş bir paydaş
yelpazesine hitap eden bir formatta sunuyor. İçeriğin az ve öz olması amaçlanıyor. Sizi bu teknolojileri daha detaylı
bir şekilde incelemeye davet ediyoruz. Esas olarak grafiksel bir yayın olan Radar, konuları maddeleri teknikler,
araçlar, platformlar ve diller ve çerçeveler bazında gruplandırıyor. Radarın birden fazla çeyrek dairede çıkabilen
maddeleri için en uygun göründükleri çeyrek daireyi seçiyoruz. Bu maddeleri ayrıca şu anda onlar hakkındaki
tavrımızı yansıtan dört halka halinde gruplandırıyoruz. Bu halkalar:
61
62
63
65
80
66
81
67
82
68
56
83
70
58
BENİMSE
kt rün u t knolo l r kullanması
g r kt n k s nl kl nanı oru ,
d
r
g ld k k nd ro l r m d d kullanı oru .
84
69
57
85
71
PİLOT KULLANIM
Tak
tm
d r. u madd l r
kullanma ka as t s n nasıl sah
ola l c n anlamak n ml d r.
Kurumlar u t knolo , alnı ca r sk
kaldıra l c k ro l rd
rd n m
sür c olarak u gulamalıdır.
DEĞERLENDİR
DURDUR
Kurumunu u nasıl
tk l c n anlamak
amacı la tak
tm kt
a da ar.
T mk nl adım
atın.
Yeni veya son radardan beri büyük değişim geçiren maddeler üçgen olarak, aynı kalan maddeler ise yuvarlak
olarak verilir. Her bölümdeki detaylı grafikler maddelerin hareketlerini gösterir. Bu büyüklükteki bir belgeye
sığdıramayacağımız kadar fazla madde ile ilgilendiğimiz için eski radardan kalan birçok maddeyi yenilerine yer açmak
için siliyoruz. Fakat bu sildiğimiz ürünler artık umurumuzda değil anlamına gelmiyor.
Radar ile ilgili daha fazla bilgi için: thoughtworks.com/radar/#/faq
© Kasım 2015, ThoughtWorks, Inc. Tüm hakları saklıdır.
TEKNOLOJİ RADARI KASIM 2015 | 2
ABOUT THE TECHNOLOGY RADAR
ThoughtWorkers are passionate about technology. We build it, research it, test it, open source it, write about it,
and constantly aim to improve it – for everyone. Our mission is to champion software excellence and revolutionize
IT. We create and share the ThoughtWorks Technology Radar in support of that mission. The ThoughtWorks
Technology Advisory Board, a group of senior technology leaders in ThoughtWorks, creates the radar. They meet
regularly to discuss the global technology strategy for ThoughtWorks and the technology trends that significantly
impact our industry.
The radar captures the output of the Technology Advisory Board’s discussions in a format that provides value to a
wide range of stakeholders, from CIOs to developers. The content is intended as a concise summary. We encourage
you to explore these technologies for more detail. The radar is graphical in nature, grouping items into techniques,
tools, platforms, and languages & frameworks. When radar items could appear in multiple quadrants, we chose the
one that seemed most appropriate. We further group these items in four rings to reflect our current position on
them. The rings are:
61
62
63
65
80
66
81
67
82
68
56
83
70
58
ADOPT
We feel strongly that the industry should be
adopting these items. We use them when
appropriate on our projects.
84
69
57
85
71
TRIAL
Worth pursuing. It is important to
understand how to build up this
capability. Enterprises should try
this technology on a project that can
handle the risk.
ASSESS
Worth exploring
with the goal of
understanding how
it will affect your
enterprise.
HOLD
Proceed with
caution.
Items that are new or have had significant changes since the last radar are represented as triangles, while items that
have not moved are represented as circles. We are interested in far more items than we can reasonably fit into a
document this size, so we fade many items from the last radar to make room for the new items. Fading an item does
not mean that we no longer care about it.
For more background on the radar, see thoughtworks.com/radar/faq
© November 2015, ThoughtWorks, Inc. All Rights Reserved.
TECHNOLOGY RADAR NOVEMBER 2015 | 2
RADAR
30
29
TEKNİKLER
BENİMSE
1.
Müşteri odaklı kontrat testi
2.
Dağıtımın yayından ayrılması yeni
3.
Oluşturulmuş altyapı diyagramları
4.
NoPSD
5.
Ürünlerin projelerin üstünde olması
6.
Tehdit Modelleme
28
DURDUR
24. Gitflow yeni
25. Yüksek performans hırsı/web ölçeği hırsı yeni
26. Mikro servis hırsı
27. Hız Katmanlı Uygulama Stratejisi
28. CI/CD aracınızda programlama yapmak
29. SAFe™
30. Ayrı DevOps ekibi
PİLOT KULLANIM
32. Apache Mesos
33. Apache Spark
34. AWS Lambda yeni
35. Cloudera Impala
36. Fastly yeni
37. H2O
38. HSTS yeni
DEĞERLENDİR
39. Apache Kylin
40. AWS ECS yeni
41. Ceph yeni
42. CoreCLR ve CoreFX
43. Deis
44. Kubernetes yeni
45. Linux güvenlik modülleri
46. Mesosphere DCOS yeni
47. Microsoft Nano Server yeni
48. Particle Photon/Particle Electron
49. Presto yeni
50. Rancher yeni
51. Zaman serisi veri tabanı
15
21
26
17
20
13
25
16
14
19
12
11
6
10
24
5
3
9
18
8
DURDUR
DEĞERLENDİR
1
PİLOT KULLANIM
39
BENİMSE
32
31
33
40
52
41
34
35
42
43
36
38
44
53
45
37
46
47
54
Yeni veya farklı kademeye geçmiş
Değişmemiş
48
49
50
51
55
DURDUR
52. Uygulama Sunucuları
53. Aşırı hırslı API Kapıları yeni
54. SPDY
55. Yüzeysel özel bulut yeni
© Kasım 2015, ThoughtWorks, Inc. Tüm hakları saklıdır.
4
2
7
PLATFORMLAR
BENİMSE
31. TOTP Two-Factor Authentication
22
27
PİLOT KULLANIM
7.
BEM yeni
8.
BFF – Ön yüzler için Backend yeni
9.
Yapılar için Docker yeni
10. Event Storming yeni
11. Flux
12. Eşsonuçluluk filtresi yeni
13. İzole ortamlar için iFrames yeni
14. Her şey için NPM yeni
15. Önce Çevrimdışı web uygulamaları
16. Phoenix Environments
17. Üretimde QA yeni
DEĞERLENDİR
18. Sadece birikimli veriler
19. Hata bildirme ödülleri yeni
20. Veri gölü
21. Hosted IDE’ler yeni
22. Değişmez değerlerin izlenmesi yeni
23. Reactive Architectures
23
TEKNOLOJİ RADARI KASIM 2015 | 3
RADAR
ARAÇLAR
BENİMSE
56. Composer
57. Mountebank
58. Postman
73
72
74
75
76
59
78
77
60
64
62
61
63
PİLOT KULLANIM
59. Browsersync yeni
60. Carthage yeni
61. Consul
62. Docker Toolbox yeni
63. Gitrob yeni
64. GitUp yeni
65. Hamms
66. IndexedDB
67. Polly
68. REST-assured
69. Sensu
70. SysDig yeni
71. ZAP
86
79
65
80
66
81
67
82
68
56
83
84
69
57
70
58
85
71
BENİMSE
PİLOT KULLANIM
DEĞERLENDİR
DURDUR
89
102
93
88
87
101
92
100
91
98
97
94
95
96
Yeni veya farklı kademeye geçmiş
Değişmemiş
© Kasım 2015, ThoughtWorks, Inc. Tüm hakları saklıdır.
DURDUR
86. Citrix for development
DİLLER VE FRAMEWORK’LER
BENİMSE
87. ECMAScript 6 yeni
88. Nancy
89. Swift
PİLOT KULLANIM
90. Enlive yeni
91. React.js
92. SignalR yeni
93. Spring Boot
99
90
DEĞERLENDİR
72. Apache Kafka
73. Concourse CI yeni
74. Espresso yeni
75. Gauge yeni
76. Gor
77. ievms yeni
78. Let’s Encrypt yeni
79. Pageify yeni
80. Prometheus
81. Quick
82. RAML yeni
83. Security Monkey
84. Sleepy Puppy yeni
85. Visual Studio Code yeni
DENEME
94. Axon yeni
95. Ember.js
96. Frege yeni
97. HyperResource yeni
98. Material UI yeni
99. OkHttp yeni
100. React Native yeni
101. TLA+ yeni
102. Traveling Ruby yeni
DURDUR
TEKNOLOJİ RADARI KASIM 2015 | 4
THE RADAR
30
29
TECHNIQUES
ADOPT
1.
Consumer-driven contract testing
2.
Decoupling deployment from release new
3.
Generated infrastructure diagrams
4.
NoPSD
5.
Products over projects
6.
Threat Modelling
28
22
27
TRIAL
7.
BEM new
8.
BFF - Backend for frontends new
9.
Docker for builds new
10. Event Storming new
11. Flux
12. Idempotency filter new
13. iFrames for sandboxing new
14. NPM for all the things new
15. Offline first web applications
16. Phoenix Environments
17. QA in production new
15
21
26
17
20
13
25
16
14
19
12
11
6
10
ASSESS
18. Accumulate-only data
19. Bug bounties new
20. Data Lake
21. Hosted IDE’s new
22. Monitoring of invariants new
23. Reactive Architectures
HOLD
24. Gitflow new
25. High performance envy/web scale envy
26. Microservice envy
27. Pace-layered Application Strategy
28. Programming in your CI/CD tool
29. SAFe™
30. Separate DevOps team
23
24
18
5
3
9
8
7
new
HOLD
ASSESS
TRIAL
32. Apache Mesos
33. Apache Spark
34. AWS Lambda new
35. Cloudera Impala
36. Fastly new
37. H2O
38. HSTS new
ASSESS
39. Apache Kylin
40. AWS ECS new
41. Ceph new
42. CoreCLR and CoreFX
43. Deis
44. Kubernetes new
45. Linux security modules
46. Mesosphere DCOS new
47. Microsoft Nano Server new
48. Particle Photon/Particle Electron
49. Presto new
50. Rancher new
51. Time series databases
ADOPT
32
52
31
33
40
PLATFORMS
ADOPT
31. TOTP Two-Factor Authentication
1
TRIAL
39
41
34
35
42
43
36
38
44
53
45
37
46
47
54
New or moved
No change
48
49
50
51
55
HOLD
52. Application Servers
53. Over-ambitious API Gateways new
54. SPDY
55. Superficial private cloud new
© November 2015, ThoughtWorks, Inc. All Rights Reserved.
4
2
TECHNOLOGY RADAR NOVEMBER 2015 | 3
THE RADAR
TOOLS
ADOPT
56. Composer
57. Mountebank
58. Postman
73
72
74
75
76
59
78
77
60
64
62
61
63
TRIAL
59. Browsersync new
60. Carthage new
61. Consul
62. Docker Toolbox new
63. Gitrob new
64. GitUp new
65. Hamms
66. IndexedDB
67. Polly
68. REST-assured
69. Sensu
70. SysDig new
71. ZAP
86
79
65
80
66
81
67
82
68
56
83
84
69
57
70
58
85
71
ADOPT
TRIAL
ASSESS
HOLD
89
102
93
88
87
101
92
100
91
98
97
94
95
96
New or moved
No change
© November 2015, ThoughtWorks, Inc. All Rights Reserved.
HOLD
86. Citrix for development
LANGUAGES & FRAMEWORKS
ADOPT
87. ECMAScript 6 new
88. Nancy
89. Swift
TRIAL
90. Enlive new
91. React.js
92. SignalR new
93. Spring Boot
99
90
ASSESS
72. Apache Kafka
73. Concourse CI new
74. Espresso new
75. Gauge new
76. Gor
77. ievms new
78. Let’s Encrypt new
79. Pageify new
80. Prometheus
81. Quick
82. RAML new
83. Security Monkey
84. Sleepy Puppy new
85. Visual Studio Code new
ASSESS
94. Axon new
95. Ember.js
96. Frege new
97. HyperResource new
98. Material UI new
99. OkHttp new
100. React Native new
101. TLA+ new
102. Traveling Ruby new
HOLD
TECHNOLOGY RADAR NOVEMBER 2015 | 4
TEKNİKLER
Sürekli Teslimi uygulamak birçok kuruluş için bir zorluk
olmaya devam ediyor. Dağıtımın yayından ayrılması
gibi kullanışlı teknikleri vurgulamak da önemini
koruyor. Dağıtım terimini sadece, uygulama bileşenleri
ve altyapısında bir değişikliğin dağıtılması işine atıfta
bulunurken kullanmayı tavsiye ediyoruz. Yayınlama
terimi, bir özellik değişikliği nihai kullanıcılara yönelik
olarak yayınlandığı ve ticari açıdan bir etkisi olduğu
zaman kullanılmalıdır. Örneğin özellik anahtarı ve sessiz
lansman gibi teknikleri kullanarak üretim sistemlerindeki
değişiklikleri özellikleri yayınlamaksızın daha sık bir
şekilde dağıtabiliriz. Daha sık dağıtım yapılması değişimle
bağlantılı riski azaltırken, ticari paydaşlar da özelliklerin
nihai kullanıcılara ne zaman yayınlanacağı konusunda
kontrolü ellerinde tutarlar.
‘Tam Zamanında Tasarım’ görsel tasarım için NoPSD
hareketinin yakalamaya çalıştığı önemli ve kullanışlı bir
konsepttir. Tüm uygulamayı veya her kullanıcı arayüzü
unsurunu en başta tasarlamanız gerekmez. Her şeyi
ihtiyacınız olduğu zaman ve kullanabileceğiniz en hafif
araçlarla tasarlayın.
30
29
28
23
22
27
15
21
26
17
20
13
25
16
14
19
12
11
6
10
24
5
3
9
18
8
2
7
DURDUR
DEĞERLENDİR
42
43
44
53
1
PİLOT KULLANIM
39
ADOPT
32
1. Müşteri odaklı kontrat testi
2. Dağıtımın yayından
40 ayrılması yeni
3. Oluşturulmuş altyapı diyagramları
4. NoPSD
5. Ürünlerin projelerin
41 üstünde olması
6. Tehdit52
Modelleme
4
BENİMSE
PİLOT KULLANIM
7. BEM yeni
31
8. 33
BFF – Ön yüzler için Backend yeni
9. Yapılar için Docker yeni
10. Event Storming yeni
11. Flux
34
12. Eşsonuçluluk filtresi yeni
35
13. İzole ortamlar için iFrames yeni
14. Her şey için NPM yeni
15. Önce Çevrimdışı web uygulamaları
16. Phoenix36
Environments
38
17. Üretimde QA yeni
45
Örneğin Sketch gibi daha hızlı öğrenme eğrisi olan
daha basit araçlarda da buna denk bir artış gördük, Aynı
zamanda kalem-kağıda dönenler de de artış gördük
(özellikle mevcut bir güçlü dijital stil kılavuzu ile
birlikte kullananlarda). Ekranlar için tasarım yaparken
düz modellerin getirdiği kısıtlamalar nedeniyle Invision,
FramerJS ve Origami gibi araçlarla - veya sadece HTML/
CSS ve biraz JavaScript ile - çeşitli gerçekçilik seviyelerinde
prototipler oluşturmak tasarımla ilgili niyetleri paylaşmak
için giderek daha yaygın ve değerli bir yöntem haline
geldi.
Uzun zamandır bir proje olarak yazılım geliştirme
üzerinde düşünmenin – ki bu, sınırlı bir zaman
dilimi içerisinde bütçelendirilen ve teslim edilen bir
şeydir – modern iş hayatının ihtiyaçlarına uymadığını
savunuyoruz. Önemli yazılım çalışmalarının, destek
verdiği iş sürecini sürekli destekleyen ve yeniden
düşünen, devam eden bir ürün olması gerekiyor. Bu
tür bir çalışma iş süreci ve yazılımı kullanışlı olmaktan
çıkmadığı sürece tamamlanmış olmayacaktır. Bu,
ürünlerin projelerin üstünde olması yaklaşımı
hakkındaki gözlemlerimizle, hem kendi projelerimiz hem
de başka projeler açısından, bunun birkaç istisna dışında
her durumda kullanılması gereken bir yaklaşım olduğunu
tespit ediyoruz.
73
Son aylardaki
yüksek profilli güvenlik ihlallerinin sayısına
bakıldığında,
yazılım
geliştirme ekiplerinin artık güvenil
72
74
75
yazılımlar
yazmaya
önem vermeleri
ve kullanıcılarının
86
verileriyle sorumlu
76 bir şekilde ilgilenmeleri gerektiği
59
78
konusunda
kimseyi 77
ikna etmeleri gerekmiyor. Ancak
60
64 dik bir öğrenme
ekiplerin karşısında
eğrisi bulunuyor
79
62
ve –61organize
suçlar
ve
devlete
karşı
yapılan
ajanlık
63
65
faaliyetlerinden, gençlerin ‘sırf
eğlence
için’
sistemlere
80
saldırmalarına kadar
uzanan çok 81
sayıda potansiyel tehdit
66
67
çok ağır bir yük haline gelebiliyor. Tehdit Modelleme
82
68
çoğunlukla savunma perspektifli ve potansiyel tehditleri
56
83
anlayıp sınıflandırmanıza yardımcı
olan 84
bir dizi teknik
69
57
sağlıyor. ‘Kötü kullanıcı hikayelerine’ dönüşen tehdit
70
85
modelleri
bir ekibe sistemlerini daha güvenli
hale
58
71
getirebilmeleri için gerekli
olan yönetilebilir ve etkin bir
BENİMSE sağlayabiliyor.
PİLOT KULLANIM
DEĞERLENDİR DURDUR
yaklaşım
89
DEĞERLENDİR
18. Sadece birikimli veriler
19. Hata bildirme ödülleri yeni
20. Veri gölü
21. Hosted88
IDE’ler yeni
22. Değişmez değerlerin izlenmesi yeni
23.87Reactive Architectures 92
100
91
99
37
98
90
46
© Kasım 2015, ThoughtWorks, Inc. Tüm hakları
saklıdır.
TEKNOLOJİ RADARI KASIM 2015 | 5
47
54
97
48
94
49
DURDUR
24. Gitflow yeni
102
25. Yüksek performans hırsı/web ölçeği hırsı yeni
26.
Mikro
servis
hırsı
93
27. Hız Katmanlı Uygulama Stratejisi
28. CI/CD aracınızda
101 programlama yapmak
29. SAFe™
30. Ayrı DevOps ekibi
95
96
TECHNIQUES
Implementing Continuous Delivery continues to be
a challenge for many organizations, and it remains
important to highlight useful techniques such as
decoupling deployment from release. We recommend
strictly using the term Deployment when referring to the
act of deploying a change to application components or
infrastructure. The term Release should be used when a
feature change is released to end users, with a business
impact. Using techniques such as feature toggles and
dark launches, we can deploy changes to production
systems more frequently without releasing features.
More-frequent deployments reduce the risk associated
with change, while business stakeholders retain control
over when features are released to end users.
‘Just In Time Design’ is an important and useful concept
for visual design that the NoPSD movement attempts to
capture. You don’t need to design the whole application
30
29
28
23
15
21
26
17
20
13
25
16
14
19
12
11
6
10
24
5
3
9
18
8
ASSESS
1
TRIAL
39
4
2
7
HOLD
We’ve long been championing the idea that thinking of
software development as a project - something budgeted
and delivered during a limited time slot - doesn’t fit the
needs of the modern business. Important software
efforts need to be an ongoing product that supports
and rethinks the business process it is supporting. Such
efforts are not complete until the business process, and
its software, cease to be useful. Our observation of this
products over projects approach, both with our own
projects and outside, makes us determine that it is the
73
approach to use for all but exceptional cases.
72
22
27
or every UI element up front. Design things as you
need them with as lightweight tools as you can use.
We have seen a corresponding growth in simpler tools
with faster learning curves, such as Sketch, as well as
an increasing return to pen-and-paper (especially when
paired with an existing robust digital style guide).
Because of the limitations of flat mock-ups when you’re
designing for screens, creating prototypes of varying
fidelity with tools such as Invision, FramerJS and
Origami - or simply HTML/CSS and a bit of JavaScript has also become increasingly common and valuable for
communicating design intent.
ADOPT
74
75
With the number
of high-profile86security breaches in the
76
past
months,
software
development
teams no longer
59
78
77 they must place an emphasis on
60 convincing that
need
64
79
writing secure software
and dealing
with their users’
62
63
data61in a responsible
way.
The
teams
face a steep
65
learning curve, though, and the
80 vast number of potential
threats - ranging66from
crime and government
67 organized 81
spying to teenagers who
attack
systems
‘for the lulz’
82
68
can
be
overwhelming.
Threat
Modelling
provides a
56
83
set of techniques, mostly
from
a
defensive
perspective,
84
69
57
that help you understand and classify potential threats.
70
85
Turned
58 into ‘evil-user stories’, threat models can give a
71
team a manageable and effective approach to making
TRIAL
ASSESS
HOLD
theirADOPT
systems more secure.
89
32
102
31
33
40
93
88
52
41
ADOPT
42
1. Consumer-driven contract
testing
2. Decoupling deployment from release
3. Generated infrastructure
43diagrams
4. NoPSD
5. Products over projects
44
6. Threat Modelling
53
45
46
54
34
TRIAL
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
47
17.
101
87
35
BEM
BFF - Backend for frontends
Docker for builds
36
Event Storming
38
Flux
Idempotency filter
iFrames for sandboxing
37
NPM for all the things
Offline first web applications
Phoenix Environments
QA in production
48
49
© November 2015, ThoughtWorks, Inc. All Rights Reserved.
55
92
ASSESS
18. Accumulate-only data
19. Bug bounties
20. Data Lake
91
21. Hosted IDE’s
22. Monitoring of invariants
23. Reactive Architectures
98
90
HOLD
24. Gitflow
100
25. High performance envy/web scale envy
26. Microservice envy
99 27. Pace-layered Application Strategy
28. Programming in your CI/CD tool
29. SAFe™
30. Separate DevOps team
97
94
95
96
50
51
TECHNOLOGY RADAR NOVEMBER 2015 | 5
TEKNİKLER devamı
CSS sorunlarını çözmek zahmetli olabiliyor. Kaç defa,
sorununuzun gerçek kaynağını bulmak için binlerce
iptal edilmiş stil arasında trol avcılığı yapmanız gerekti?
Bu nedenle birçok ekip, peş peşe dizme ve iptallerden
kaçınmak, tercih edilen sitiller oluşturmak ve isimleri
düşünerek vermek gibi çeşitli konularda birçok kılavuz
çıkarmak zorunda kaldı. BEM, CSS’inize anlamsal
açıklık vermenize yardımcı olan bir CSS isimlendirme
konvansiyonudur (Block, Element, Modifier’ın
kısaltmasıdır). BEM’i kullanarak bir unsurun ortaya
çıkmasını hangi CSS kurallarınının etkilediğini anlamak ve
daha önemlisi bu kuralların amacını anlamak çok daha
kolay hale geliyor. Bu yaklaşım CSS dünyasına türeme
yerine kompozisyonu tercih etmenin OO dersini vermek
gibi görülebilir.
Değerli hizmetler, müşterilerde web yerine mobil ve
web arayüzünün farklı şekilleri gibi birçok varyasyonu
destekleyebilir. Tekrar kullanılabilir bir API’ye sahip
bütün müşterileri desteklemek için tek bir arka plan
API tasarlamak cazip bir fikirdir. Ancak müşterilerin
ihtiyaçlarının yanı sıra kısıtları da çok farklılıklar
gösteriyor. Örneğin mobil cihazlar için bant genişliğine
karşılık hızlı web bağlantılarında çok miktarda veri isteği
gibi. Sonuç olarak her tür ön uç müşterisi için farklı
arka plan hizmetleri tanımlamak çoğu zaman en
iyisidir. Bu arka planlar her ön uç ile uyumlulaştırılmış
ekiplerce geliştirilmeli ve böylece her arka planının
müşterisinin ihtiyaçlarını tam olarak karşılaması
sağlanmalıdır.
Docker’ın birçok inovatif kullanımı arasında
projelerimizde gördüğümüz biri yapı süresi
bağımlılıklarını yönetmek için kullanılan bir tekniktir.
Geçmişte, bir İS üzerinde yapı aktörlerini kullanmak
ve hedeflenen yapı için ihtiyaç duyulan bağımlılıklarla
güçlendirmek çok yaygındı. Ancak Docker ile toplama
aşamasını izole bir ortamda bağımlılıklarla tamamlayarak
yürütmek ve yapı aktörünü bulaştırmamak mümkün.
Yapılar için Docker kullanma tekniği özellikle Golang
ikilileri toplamak için çok başarılı olduğunu kanıtladı ve
tam da bu amaçla hazırlanmış bir Golang yapı konteynırı
bulunuyor.
Event Storming, hızlı “dıştan içe” alan modelleme için
kullanışlı bir yöntemdir: Statik bir veri modelinden ziyade
alanda meydana gelen olaylarla başlar. Kolaylaştırılmış
bir atölye gibi çalışan bu yöntem, alanda meydana gelen
önemli olayların keşfedilmesine odaklanır, bunları bir
zaman serisine yerleştirir, tetikleyicilerini tanımlar ve
aralarındaki ilişkileri keşfeder.
© Kasım 2015, ThoughtWorks, Inc. Tüm hakları saklıdır.
Bu yaklaşım özellikle CQRS veya Event Sourcing
yaklaşımını benimseyen kişiler için kullanışlıdır.
Ortamdaki doğru kişileri seçmek önemlidir – hem soruları
soran hem de cevapları veren iş ve teknik adamlarından
oluşan bir karışım. Büyük tabloyu keşfetmeyi hedefleyin
ve amacınız çözümlere dalmadan önce, kolektif bir
şekilde, alanı bütün karmaşıklığıyla anlamak olsun.
Flux, Facebook’un sunduğu bir uygulama mimarisidir.
Genellikle React.js ile birlikte anılan Flux, uygulamaların
sunulma sırası boyunca tek yönlü bir veri akışına
dayanır. Flux, çok kıdemli MV* klişelerinden kaçınacak
şekilde müşteri taraflı JavaScript uygulamalarının
modern web ortamını benimser. ThoughtWork ekipleri
şu anda bu mimari tarzı konusunda biraz deneyim
kazanmaya başlıyorlar ve servis oryantasyonu ile çok
uyumlu olduğunu ve çift yönlü veri bağlamanın özünden
kaynaklanan bazı sorunları çözdüğünü düşünüyorlar.
Birçok servis ve özellikle eski servisler, herhangi bir
talebin sadece bir kez ortaya çıkacağı varsayımıyla
yazılmıştır. Ağların mevcut halleriyle bunun düzenlenmesi
zor olabilir. Eşsonuçluluk filtresi, sadece tekrarlanan
talepleri kontrol eden ve tedarik servisine sadece bir defa
gönderilmelerini sağlayan basit bir bileşendir. Böyle bir
filtre sadece bu görevi yerine getirmeli ve mevcut servis
çağrıları üzerinde bir dekorasyon malzemesi olarak
kullanılmalıdır.
Modern web sayfalarında, çok çeşitli üçüncü taraf
kaynaklardan gelen çok miktarda JavaScript parçacıkları
bulunması eğilimi vardır. Bunun hem güvenlik hem
de performans açısından olumsuz etkileri olabilir.
JavaScript’in web bileşenleriyle izolasyonunun daha
mükemmel hale getirilmesini hâlâ beklemekte olmamıza
rağmen ekiplerimiz, güvenilmeyen JavaScript’ler için
izole ortamlar oluşturmak amacıyla HTML5 iFrames
kullanmanın faydasını gördü.
JavaScript dünyasında çok miktarda bağımlılık ve paket
yönetim aracı bulunuyor ve bunların hepsi Node Package
Manager’a (NPM) dayanıyor. Ekipler bu ekstra araçları
artık gereksiz görmeye başlıyor ve paket ve bağımlılık
yönetimi için sadece NPM kullanmanız mümkünse öyle
yapmanız gerektiği tavsiyesinde bulunuyorlar. Her şey
için sadece NPM kullanmanın getireceği sadeleştirme
JavaScript araçları alanındaki çalkantıları bira olsun
azaltmaya yardımcı oluyor.
TEKNOLOJİ RADARI KASIM 2015 | 6
TECHNIQUES continued
Debugging CSS problems can be painful. How many times
have you had to trawl through thousands of overridden
styles to work out the source of your problem? This has
led many of our teams to introduce various guidelines
such as avoiding cascading and overrides, making styles
opt-in and emphasizing thoughtful naming. BEM is
a simple CSS naming convention (standing for Block,
Element, Modifier) that helps give semantic clarity and
structure to your CSS. By using BEM, it becomes much
easier to understand which CSS rules are influencing
the appearance of an element and, more importantly,
the intent of those rules. This approach can be seen
as moving the OO lesson of favoring composition over
inheritance to the world of CSS.
Valuable services support many variations in clients,
such as mobile versus web and different forms of web
interface. It’s tempting to design a single back-end API to
support all clients with a reusable API. But client needs
vary, as do constraints such as bandwidth for mobile
devices versus the desire for lots of data on fast web
connections. Consequently it’s often best to define
different back-end services for each kind of frontend client. These back ends should be developed by
teams aligned with each front end to ensure that each
back end properly meets the needs of its client.
One of the many innovative uses of Docker that we’ve
seen on our projects is a technique to manage buildtime dependencies. In the past, it was common to run
build agents on an OS, augmented with dependencies
needed for the target build. But with Docker it is possible
to run the compilation step in an isolated environment
complete with dependencies without contaminating the
build agent. This technique of using Docker for builds
has proven particularly useful for compiling Golang
binaries, and the golang-builder container is available for
this very purpose.
Event Storming is a useful way to do rapid “outside-in”
domain modeling: starting with the events that occur
in the domain rather than a static data model. Run as
a facilitated workshop, it focuses on discovering key
domain events, placing them along a timeline, identifying
their triggers and then exploring their relationships. This
approach is particularly useful for people taking a CQRS
© November 2015, ThoughtWorks, Inc. All Rights Reserved.
or Event Sourcing approach. Getting the right people in
the room is important - a blend of business and technical
people who bring both the questions and the answers.
Ensuring that you have enough wall space for modeling
is the second key to success. Look to discover the big
picture, with the goal of collectively understanding
the domain in all of its complexity, before diving into
solutions.
Flux is an application architecture introduced by
Facebook. Usually mentioned in conjunction with React.
js, Flux is based on a one-way flow of data up through
the rendering pipeline. Flux embraces the modern web
landscape of client-side JavaScript applications in a way
that avoids the venerable MV* clichés. ThoughtWorks
teams are now starting to gain some experience with
this architectural style and find that it meshes well with
service orientation and solves some of the problems
inherent in two-way data binding.
Many services, especially legacy services, are written with
the assumption that any request will occur only once.
Networks being what they are, this can be difficult to
arrange. An idempotency filter is a simple component
that merely checks for duplicate requests and ensures
that they are sent to the supplier service only once. Such
a filter should do only this one task and be used as a
decorator over existing service calls.
Modern web pages tend to contain a plethora of
JavaScript widgets and snippets coming from a variety of
third-party sources. This can have a negative impact on
both security and performance. While we are still waiting
for fuller JavaScript isolation with web components, our
teams have benefited from using HTML5 iFrames for
sandboxing untrusted JavaScript.
The JavaScript world has a plethora of dependency and
package-management tools, all of which rely on the
Node Package Manager (NPM). Teams are starting to see
these extra tools as redundant and are recommending
that if you can use solely NPM for package and
dependency management, you should. The simplification
of using NPM for all the things helps reduce some of
the churn in the JavaScript tools space.
TECHNOLOGY RADAR NOVEMBER 2015 | 6
TEKNİKLER devamı
Ortamların hazırlanması ve güncellenmesi için
harcanan zaman birçok yazılım projesinde önemli bir
darboğaz olmaya devam ediyor. Phoenix ortamları,
ortamların tamamını Phoenix Sunucuları ile kapsama
fikrini sunarak yardımcı olabilir. Bunun çok değerli ve
zaman kazandırın bir teknik olduğunu ve bu yüzden
bu yaklaşımı denemeyi düşünmeniz gerektiğini
düşünüyoruz. Otomasyon kullanarak – ağ kurulumları,
yük dengeleme ve güvenlik duvarı portları gibi –
ortamları, örneğin AWS’de CloudFormation kullanarak,
bütün olarak yaratabiliriz. O halde ortamları bozarak
ve sıfırdan düzenli bir şekilde yeniden oluşturarak
bu sürecin işlediğini kanıtlayabiliriz. Phoenix
Environments, test etme, geliştirme, UAT ve felaket
kurtarma için yeni ortamların hazırlanmasına destek
verebilir. Phoenix Servers için olduğu gibi bu model de
her zaman uygulanabilir değil ve durum ve bağımlılıklar
gibi konularda dikkatle düşünmemiz gerekiyor. Ortam
kurulumunun yapılması gerektiği zaman, tüm ortamı
bir mavi/yeşil dağıtım gibi ele almak kullanılabilecek bir
yaklaşım olabilir.
Geleneksel olarak QA rolleri, yazılım ürününün
kalitesini üretim öncesi bir ortamda değerlendirmeye
odaklanıyordu. Sürekli Teslimin yükselişiyle birlikte,
QA rolü yazılım ürününün kalitesini üretimde analiz
etmeyi de kapsamaya doğru kayıyor. Bu kapsamda,
üretim sistemleri izleniyor, acil durum yaratan hataların
tespiti için alarm şartları oluşturuluyor, devamlılık
gösteren kalite sorunları tespit ediliyor ve bu işi yapmak
için üretim ortamında hangi önlemlerin alınabileceği
belirleniyor. Bazı kuruluşların çok ileri giderek üretim
öncesi QA’yı ihmal etmesi tehlikesi bulunmasına
karşılık, bizim deneyimlerimiz üretimde QA’nın
Sürekli Teslimde makul ölçüde ilerlemiş durumda olan
kuruluşlar için değerli bir araç olduğunu gösteriyor.
Sabit veri yapıları giderek daha popüler hale gelirken,
Clojure ve Scala gibi fonksiyonel diller, sabitliği
varsayılan durum olarak sunuyor. Veri sabitliği kodun
daha kolay yazılmasını, okunmasını ve üzerinde akıl
yürütülmesini sağlıyor. Sadece birikimli bir veri
deposu kullanmak veri tabanındaki bu faydaların
bazılarını sağlayabilir ve aynı zamanda denetim yapmayı
ve tarihsel sorgulamayı daha basit hale getirebilir.
Uygulama seçenekleri, Datomic gibi spesifik birikimli
veri depolarından basit bir şekilde “ekle-güncelleme”
yaklaşımı ile birlikte geleneksel veri tabanı kullanmaya
kadar uzanabiliyor. Sadece birikimli yöntem verilerin
güncelleme yerine geri çekme yöntemiyle kaldırıldığı bir
tasarım stratejisidir; sadece eklemeli yöntem ise bir
uygulama tekniğidir.
© Kasım 2015, ThoughtWorks, Inc. Tüm hakları saklıdır.
Kuruluşlar, çoğu zaman güvenlikle ilgili olan hataların
bildirilmesini teşvik etmek ve genellikle yazılımların
kalitesini yükseltmeye yardım etmek için hata bildirme
ödüllerini giderek daha fazla kullanıyorlar. Bu programları
desteklemek için HackerOne ve BugCrowd gibi şirketler
kuruluşların bu süreci daha kolay yönetmelerine yardım
edebilirler. Bizim bu konuda fazla deneyimimiz yok ancak
insanları, ortaya çıkıp, çok zararlı olabilecek zaafları
açık ve şeffaf bir şekilde göstermeye teşvik etme fikrini
beğeniyoruz. Kullanıcıları yazılımınızda zaaflar bulmaya
teşvik etmenin hukuki açıdan bazı sorunlu yanları olabilir
ve bu yüzden lütfen önce bunu kontrol edin.
Veri Gölü, veri analizleri için kaynak işlevi gören
çoğunlukla işlenmemiş ‘ham’ verilerden oluşan bir sabit
veri deposudur. Daha tanıdık olan Veri Ambarı, verileri
depolamadan önce filtreleyip işlerken, göl sadece ham
veriyi yakalar ve ihtiyaç duydukları belirli analizleri
yapmayı söz konusu verinin kullanıcılarına bırakır. Bunun
örnekleri arasında Hadoop, Spark veya Storm işleme
çerçevesi içerisindeki HDSF veya HBase bulunuyor.
Genellikle sadece küçük bir veri bilimci grubu ham veriler
üzerinde çalışarak, çoğu kullanıcının sorgulaması için,
göl kıyısındaki veri marketlerine yönelik işlenmemiş veri
akışları oluşturur. Veri Gölü sadece analiz ve bildirim
amacıyla kullanılmalıdır. Biz, operasyonel sistemler
arasında işbirliği konusunda, özellikle bu amaç için
tasarlanmış hizmetlerin kullanılmasını tercih ediyoruz.
Birçok kuruluş dağıtık veya offshore geliştirmeden
yararlanmak istiyor ancak kendi kontrolleri dışında
bulunan kodlarla ve diğer fikri mülkiyet haklarıyla
ilgili güvenlik endişeleri taşıyorlar. Sonuçta genellikle,
geliştirme için gizlilik seviyesi yüksek uzak masaüstü
çözümlerini kullanılıyor ve böylece kuruluşun güvenlik
kontrollerine uyuluyor ancak bu geliştiricinin verimliliğine
darbe vurmak anlamına geliyor. Bir alternatif, tarayıcıya
VPN üzerinden gönderilen bir Hosted IDE kullanmak
olabilir. IDE, kod ve yapı ortamı, kuruluşun kendi özel
bulutunda barındırılır ve böylece güvenlik kaygıları
azaltılır, geliştirici deneyimi ise önemli ölçüde geliştirilir. Bu
alandaki araçlar arasında Eclipse Foundation’dan Orion ve
Che ile Cloud9 ve Code Envy bulunuyor.
İzlemede genel yaklaşım hatalı şartlar üzerine düşünmek
ve bunlar ortaya çıktığında alarm vermektir. Ancak bir
yazılım sistemindeki aşırı yüksek sayıdaki arıza modlarını
tek tek saymak çoğu zaman zordur. Değişmez değerlerin
izlenmesi, normal aralıklar beklentisini oluşturmak için
kullanılan tamamlayıcı bir yaklaşımdır ve çoğu zaman
tarihi davranış biçimini inceleyerek ve bir sistemin bu
sınırlar dışına çıktığında alarm vererek gerçekleştirilir.
TEKNOLOJİ RADARI KASIM 2015 | 7
TECHNIQUES continued
The time taken to provision and update environments
continues to be a significant bottleneck on many
software projects. Phoenix Environments can help with
this delay by extending the idea of Phoenix Servers
to cover entire environments. We feel this is such a
valuable and time-saving technique that you should
consider trialing this approach. Using automation, we
can create whole environments - including network
configuration, load balancing and firewall ports - for
example by using CloudFormation in AWS. We can
then prove that the process works by tearing the
environments down and recreating them from scratch
on a regular basis. Phoenix Environments can
support provisioning new environments for testing,
development, UAT and disaster recovery. As with
Phoenix Servers, this pattern is not always applicable,
and we need to think carefully about things like state
and dependencies. Treating the whole environment as
a blue/green deployment can be one approach when
environment reconfiguration needs to be done.
Traditionally, QA roles have focused on assessing
the quality of a software product in a pre-production
environment. With the rise of Continuous Delivery, the
QA role is shifting to include analyzing software product
quality in production. This involves monitoring of the
production systems, coming up with alert conditions
to detect urgent errors, determining ongoing quality
issues and figuring out what measurements you can
use in the production environment to make this work.
While there is a danger that some organizations will go
too far and neglect pre-production QA, our experience
shows that QA in production is a valuable tool for
organizations that have already progressed to a
reasonable degree of Continuous Delivery.
Immutable data structures are becoming more popular,
with functional languages such as Clojure and Scala
providing immutability by default. Immutability allows
code to be more easily written, read and reasoned
about. Using an accumulate-only data store can
confer some of these benefits in the database
layer, as well as make audit and historical querying
simple. Implementation options vary, from specific
accumulative data stores such as Datomic to simply
using an “append-don’t-update” approach with a
traditional database. Accumulate-only is a design
strategy whereby data is removed via retraction rather
than update; append-only is an implementation
technique.
© November 2015, ThoughtWorks, Inc. All Rights Reserved.
More and more organizations are starting to use bug
bounties to encourage reporting of what are often
security-related bugs, and in general help improve the
quality of their software. To support these programs,
companies like HackerOne and BugCrowd can help
organizations manage this process more easily. We have
limited experience with these offerings ourselves, but
we like the idea of encouraging people to help come
forward and highlight what can often be damaging
vulnerabilities in an open and transparent way. It’s
worth noting that there might be some legal issues
with encouraging users to find vulnerabilities in your
software, so please do check that out first.
A Data Lake is an immutable data store of largely
unprocessed ‘raw’ data, acting as a source for data
analytics. Whereas the more familiar Data Warehouse
filters and processes the data before storing it, the lake
just captures the raw data, leaving it to the users of that
data to carry out the particular analysis that they need.
Examples include HDFS or HBase within a Hadoop,
Spark or Storm processing framework. Usually only a
small group of data scientists work on the raw data,
developing streams of processed data into lakeshore
data marts for most users to query. A Data Lake
should only be used for analytics and reporting. For
collaboration between operational systems we prefer
using services designed for that purpose.
Many organizations want to leverage distributed or
offshore development but have security concerns with
their code and other intellectual property sitting outside
their control. The result is often to use high-latency
remote-desktop solutions for development, adhering
to an organization’s security controls but crippling
developer productivity. An alternative is to use a Hosted
IDE delivered to a browser via VPN. The IDE, code and
build environment are hosted within the organization’s
private cloud, easing security concerns, and the
developer experience is significantly improved. Tools
in this space include Orion and Che from the Eclipse
Foundation, Cloud9 and Code Envy.
In monitoring, the common approach is to conceive of
erroneous conditions and set alerts when these appear.
But it’s often difficult to enumerate the myriad failure
modes in a software system. Monitoring of invariants
is a complementary approach to setting expected normal
ranges, often by examining historical behavior, and
alerting whenever a system goes outside those bounds.
TECHNOLOGY RADAR NOVEMBER 2015 | 7
TEKNİKLER devamı
Uzun ömürlü versiyon kontrol branşlarının sürekli
entegrasyon gibi değerli mühendislik uygulamalarına
zarar verdiğine güçlü bir inanç besliyoruz ve Gitflow’u
sevmememizin altında da bu inanç yatıyor. Aslında
Git’in esnekliğini seviyoruz ama kötü mühendislik
uygulamalarını teşvik eden araçlardan nefret ediyoruz.
Çok kısa ömürlü branşlar daha az zarar veriyor ancak
Gitflow kullandığını gördüğümüz ekiplerin çoğu bunun
branş ağırlıklı iş akışını kötüye kullanıyor ve bu da geç
entegrasyonu teşvik ediyor (bu nedenle gerçek sürekli
entegrasyondan da caydırıyor.)
Birçok ekibin, ‘ölçeklendirme ihtiyaçları olabileceği”
gerekçesiyle karmaşık araç, framework ve mimarileri
tercih eden birçok ekibin sorunlarla karşılaştığını
görüyoruz. Twitter ve Netflix gibi şirketler aşırı
yükleri destekleme gücüne sahi olabilir ve bu yüzden
mimarilere ihtiyaç duyabilirler ancak onlar aynı
zamanda bu karmaşıklığı kaldırabilecek son derece
becerikli geliştirme ekiplerine de sahipler. Birçok
durumda bu türden bir mühendislik cüretine gerek
yoktur; ekipler web ölçeği hırslarını kontrol altında
tutmalı ve sonuçta işin yapılmasını sağlayan daha sade
çözümleri tercih etmelidir.
Gartner’in Hız-katmanlı Uygulama Stratejisi
yaklaşımı, bir mimari içinde katmanlar oluşturma
fikrine, yararlı olmayan bir odaklanma yaratıyor gibi
görünüyor. (Çeşitli mimari katmanlarından oluşmuş
olabilen) farklı iş imkanları içindeki değişim hızı
üzerinde düşünmeyi daha kullanışlı bir konsept olarak
görüyoruz. Katmanlara odaklanmanın tehlikesi, birçok
değişim türünün, birçok katmanı kesmesidir. Örneğin
bir web sitesine yeni bir stok sınıfı ekleyebilmek için
© Kasım 2015, ThoughtWorks, Inc. Tüm hakları saklıdır.
gerekli olan sadece kolay değiştirilen bir CMS’ye sahip
olmak değildir; aynı zamanda veri tabanını, entegrasyon
noktalarını, ambar sistemlerini vb. güncellemeniz
gerekir. Bir mimarinin bazı kısımlarının manevraya
diğerlerinden daha müsait olmasını kabul etmek yararlı
olacaktır. Ancak bazı katmanlara odaklanmanın faydası
olmadığı ortaya çıkıyor.
Scaled Agile Framework® (SAFe™) birçok büyük
ölçekli kuruluştaki tüketici bilincinde yer edinmeye
devam ediyor. Ayrıca araçlar ve sertifikasyon SAFe™’yi
benimsemenin önemli bir yönü haline geliyor.
Gerçekleşen benimsemelerin aşırı standartlaşmanın
kurbanı olabileceği ve geniş çaplı yayınlama
uygulamalarının çevik benimsemeyi engelleyecek
uygulamalara yol açması endişelerimiz devam ediyor.
Bunun yerine, deneme aşamalarını da kapsayan
yalın bir yaklaşımın benimsenmesini tavsiye ediyoruz
ve Improvement Katas gibi sürekli iyileştirme
uygulamalarını kullanmanın kuruluşlara çevikliği
ölçeklendirme için daha iyi bir model sunduğunu
düşünüyoruz.
Scaled Agile Framework® ve SAFe™ Scaled Agile, Inc.’ın
tescilli markalarıdır.
TEKNOLOJİ RADARI KASIM 2015 | 8
TECHNIQUES continued
We firmly believe that long-lived version-control
branches harm valuable engineering practices such
as continuous integration, and this belief underlies
our dislike for Gitflow. We love the flexibility of Git
underneath but abhor tools that encourage bad
engineering practices. Very short-lived branches
hurt less, but most teams we see using Gitflow feel
empowered to abuse its branch-heavy workflow, which
encourages late integration (therefore discouraging true
continuous integration).
(which can be made up of several architectural layers)
to be a more useful concept. The danger in focusing on
layers is that many types of change cut across multiple
layers. For example, being able to add new class of stock
to a website is not just about having an easy-to-change
CMS; you also need to update the database, integration
points, warehouse systems, etc. The recognition
that some parts of an architecture need to be more
maneuverable than others is useful. However, a focus on
layers is proving unhelpful.
We see many teams run into trouble because they have
chosen complex tools, frameworks or architectures
because they ‘might need to scale’. Companies such
as Twitter and Netflix need to be able to support
extreme loads and so need these architectures, but
they also have extremely skilled development teams
able to handle the complexity. Most situations do not
require these kinds of engineering feats; teams should
keep their web scale envy in check in favor of simpler
solutions that still get the job done.
The Scaled Agile Framework® (aka SAFe™) continues
to gain mindshare in many organizations at scale.
In addition, tools and certification are becoming a
significant aspect of the adoption of SAFe™. We continue
to be concerned that actual adoptions are prone to
over-standardization and are tending towards large
release practices, resulting in practices that hinder
agile adoption. In its place, we continue to recommend
lean approaches that include experimentation and
incorporate continuous improvement practices like the
Improvement Katas offer organizations a better model
for scaling agile.
Gartner’s Pace-layered Application Strategy approach
appears to be creating an unhelpful focus on the idea of
layers within an architecture. We find thinking about the
pace of change within different business capabilities
© November 2015, ThoughtWorks, Inc. All Rights Reserved.
Scaled Agile Framework® and SAFe™ are trademarks of
Scaled Agile, Inc.
TECHNOLOGY RADAR NOVEMBER 2015 | 8
PLATFORMLAR
Şifre güvenliği halen sıcak bir tartışma konusudur ve
İngiltere hükümeti kullanıcılara daha basit şifreleri
hatırlama imkanı veren teknik kontrolleri savunuyor.
Edward Snowden’in şifreyle ilgili tavsiyesi ise sadece
30
“kıl payı güvenli” olarak tanımlanıyor.
Şifreler genellikle
29
güvenlik zincirinin en zayıf halkalarından biridir. Bu
yüzden biz, güvenliği önemli
ölçüde artırabilen iki
28
23 tavsiye
faktörlü kimlik doğrulamanın kullanılmasını
22 (TOTP) bu
ediyoruz. Zaman bazlı Bir Defalık Şifre
27
alandaki standart algoritmadır ve düz sunucu tarafı
uygulamaları ve Google ve Microsoft’un
ücretsiz akıllı
15
21
telefon kimlik doğrulama uygulamaları vardır. 17
26
20
Mesos, devasa ölçekli dağıtım sistemlerin
inşa
13
16
edilmesini kolaylaştırmak için altyapıdaki hesaplama
14
19
25 ayıran
kaynakları
bir platformdur. Docker
için bir
12
11
6
takvimleme katmanı sağlamak veya AWS gibi şeyler
10
için bir soyutlama katmanı gibi davranmak amacıyla
5
3
9
24
kullanılabilir.
18Twitter bunu altyapısını ölçeklendirmek
amacıyla çok etkin bir şekilde kullandı.
Mesos üzerine
4
8
2
kurulmuş araçlar ortaya çıkmaya
başlıyor. Örneğin
7
1
DURDUR
DEĞERLENDİR
PİLOT KULLANIM
39
32
31
33
40
52
BENİMSE
41
34
35
42
43
36
38
44
53
45
37
46
47
54
48
49
50
51
55
BENİMSE
31. TOTP Two-Factor Authentication
PİLOT KULLANIM
32. Apache Mesos
33. Apache Spark
34. AWS Lambda yeni
35. Cloudera Impala
36. Fastly yeni
37. H2O
38. HSTS yeni
© Kasım 2015, ThoughtWorks, Inc. Tüm hakları saklıdır.
Chronos bir dağıtık, hata toleranslı, cron yerine geçen
bir araçtır. Örneğin Apple’ın Siri’nin mimarisini yeniden
kurarak Mesos kullanmaya başlaması gibi önemli başarı
hikayeleri gelmeye başladı.
AWS devasa sayıda ve aylık gibi görünen periyotlarla
yeni 73
özellikler yayınlıyor ve bu yüzden herhangi bir
yeni hizmet sunumunun gürültü ortamını aşması çok
72
zor olabiliyor.
Ancak Lambda kesinlikle dikkat çekmeyi
74
75
86
başardı. Başlangıçta sadece JaveScript’i
destekleyen
76
59ancak JVM bazlı uygulamalara
78 (kuşkusuz diğerlerine de)
77
60
destek
vermeyen Lambda, bir olaya tepki olarak veya
64
79
ilgili API62Kapısından gelen bir çağrı üzerinden çok kısa
61
63
65
süreli proseslerin
fitilini ateşlemenize olanak tanıyor.
80 bunun anlamı herhangi
Durum tutmayan servisler için
66
81
67
bir uzun ömürlü makine kullanmanız
gerekmemesi ve
82
68
muhtemelen maliyetlerin
düşüp güvenliğin
iyileşmesi
56
olacaktır.
PaaS alanına AWS’in yaptığı
başka hücumlara
83
84
rağmen
Lambda bu işi başarmaya
en yakın
aday gibi
69
57
görünüyor.
70
58
85
71
Piyasadaki birçok CDN’den biri olan Fastly, ThoughtWorks
BENİMSE
KULLANIM
DEĞERLENDİR DURDUR
projelerinde
çok ve PİLOT
artan
sayıda takip
alıyor ve özellikle
GitHub ve Twitter gibi birçok web ölçekli ev isimleri
89
tarafından kullanılıyor. Bir araya getirdiği özellikler, hız ve
102
fiyat, bir uç önbellekleme çözümü arıyorsanız çok çekici
93 bir CDN’den bu platforma
bir seçenek
oluşturuyor. Başka
88
geçen projelerin önemli ölçüde maliyet101
tasarrufu
87
92
yaptıklarına
da gördük.
Bir CDN için piyasaya girmişseniz,
100 her şey daha kötü
bunu araştırmak dışında yapacağınız
olabilir.
91
99
Son kullanıcılara yönelik işlevler açısından öngörüye
yönelik analizler giderek daha
98 fazla üründe kullanılıyor.
90
H2O, öngörüye yönelik analizleri geliştirme ekiplerinin
erişimine açık hale getiren,
çok çeşitli analizlerin düz bir
97
94
şekilde
kullanılabilmesi,
çok iyi bir performans ve JVM bazlı
95
96
platformlara kolay entegrasyon sağlayan, ilgi çekici bir açık
kaynak paketidir (arkasında da yeni bir şirket bulunuyor).
Aynı zamanda veri bilimcilerin favori araçları olan R and
Python ve Hadoop and Spark ile entegre oluyor.
DEĞERLENDİR
39. Apache Kylin
40. AWS ECS yeni
41. Ceph yeni
42. CoreCLR and CoreFX
43. Deis
44. Kubernetes yeni
45. Linux güvenlik modülleri
46. Mesosphere DCOS yeni
47. Microsoft Nano Server yeni
48. Particle Photon/Particle Electron
49. Presto yeni
50. Rancher yeni
51. Zaman serisi veri taban
DURDUR
52. Uygulama Sunucuları
53. Aşırı hırslı API Kapıları yeni
54. SPDY
55. Yüzeysel özel bulut yeni
TEKNOLOJİ RADARI KASIM 2015 | 9
PLATFORMS
Password security is still a hotly debated topic with
30
the UK government advocating technical
controls
29
that let users remember simpler passwords and
Edward Snowden’s password advice being described
28
23
as only ‘borderline secure’. Passwords are generally
22
one of the weakest links in the security
chain, so we
27
recommend employing two-factor authentication,
which can significantly improve security.15Time-based
21
17
One-Time Password (TOTP) is the standard algorithm
26
in this space, with straightforward
server-side
20
13
implementations and free smartphone
authenticator
16
apps from Google and Microsoft.
14
25
19
12
11
Mesos is a platform that abstracts out underlying 6
10
computing resources to make it easier to build massively
5
3
9It can be used
24
scalable
distributed
systems.
to
provide
a
18
scheduling layer for Docker, or to
4
8 act as an abstraction
2
layer to things like AWS. Twitter
has used it to great
7
1
HOLD
ASSESS
TRIAL
39
ADOPT
32
52
41
34
35
42
43
36
38
44
53
45
37
46
47
54
48
49
50
51
55
ADOPT
31. TOTP Two-Factor Authentication
TRIAL
32. Apache Mesos
33. Apache Spark
34. AWS Lambda
35. Cloudera Impala
36. Fastly
37. H2O
38. HSTS
© November 2015, ThoughtWorks, Inc. All Rights Reserved.
72
74
75
AWS releases a huge number of86new features on what
76
59seems like a monthly basis, 78
so it can sometimes be hard
77
for60any new service offering to rise above the noise, but
64
79
Lambda
62 certainly manages to attract notice. Initially
61
63
65
just supporting JavaScript, but now adding support for
JVM-based applications (with80more no doubt to follow),
66
81 short-lived processes
67 fire up very
Lambda allows you
to
82call from the
either in reaction to an
68 event, or via a
56
related
API Gateway. For stateless
services,
this means
83
you 57
don’t need to worry69about running84any long-lived
machines, potentially
70 reducing costs and improving
85
58
security.
Despite other
forays into the PaaS space by
71
AWS, Lambda looks the closest to getting this right.
ADOPT
31
33
40
effect to help it scale its infrastructure. Tools built on
top of Mesos are starting to appear, such as Chronos,
which is a distributed, fault-tolerant cron replacement.
Prominent
success stories are appearing, such as Apple’s
73
Siri rearchitecting to use Mesos.
TRIAL
ASSESS
HOLD
Fastly, one of a number of CDNs on the market, has a
89
large and growing following on ThoughtWorks projects
102
and is used by many web-scale household names, such
93
as GitHub
and Twitter. Its feature
set, speed and price
88
point combine to make it a very attractive
101 option when
87
you’re
looking for92an edge caching solution. We have also
100
seen significant cost savings on projects
that move to
this platform
from
another
CDN.
If
you
are
in the market
91
99
for a CDN, you could do worse than investigate this one.
Predictive analytics are used
98 in more and more products,
often 90
directly in end user-facing functionality. H2O is
an interesting open source
package (with a startup
97
94
behind
it)95that makes
predictive analytics accessible to
96
development teams, offering straightforward use of a
wide variety of analytics, great performance and easy
integration on JVM-based platforms. At the same time it
integrates with the data scientists’ favorite tools, R and
Python, as well as Hadoop and Spark.
ASSESS
39. Apache Kylin
40. AWS ECS
41. Ceph
42. CoreCLR and CoreFX
43. Deis
44. Kubernetes
45. Linux security modules
46. Mesosphere DCOS
47. Microsoft Nano Server
48. Particle Photon/Particle Electron
49. Presto
50. Rancher
51. Time series databases
HOLD
52. Application Servers
53. Over-ambitious API Gateways
54. SPDY
55. Superficial private cloud
TECHNOLOGY RADAR NOVEMBER 2015 | 9
PLATFORMLAR devamı
HTTP Strict Transport Security (HSTS) şu anda çok
yaygın bir destek gören ve web sitelerinin kendilerini
sürüm düşürme saldırılarından korumalarını sağlayan
bir politikadır. HTTPS bağlamında, sürüm düşürme
saldırısı, sitenizin kullanıcılarının HTTPS yerine HTTP’ye
düşmelerine neden olan ve örneğin iki bağlantı noktası
arasındaki bağlantıyı izinsiz izleme gibi başka saldırıları
mümkün hale getiren bir saldırıdır. Sunucu başlığını
kullanarak tarayıcıların sizin web sitenize erişmek için
sadece HTTPS kullanmaları ve sürüm düşürme ve
siteyle http üzerinde temasa geçme çağrılarını dikkate
almamaları gerektiğini bildirmiş oluyorsunuz. Tarayıcı
desteği artık bu uygulaması kolay özelliğin HTTPS
kullanan her site için düşünülmesine yetecek kadar
yaygınlaştı.
Esnek Konteynir Servisi (ECS) AWS’nin çok ana makineli
Docker alanına girişini oluşturuyor. Bu alanda çok fazla
rekabet olmasına rağmen henüz tesis dışı yönetilen
çözümlerin sayısı fazla değil. ECS iyi bir ilk aşama gibi
görünmekle birlikte, şu anda aşırı karmaşık olmasından
ve iyi bir soyutlama katmanına sahip olmamasından
endişe duyuyoruz. Ancak AWS üzerinde Docker
çalıştırmak istiyorsanız bu aracın kesinlikle listenizin üst
sıralarında yer alması gerekiyor. Sadece işe bununla
başlamanın kolay olduğunu düşünmemelisiniz.
Ceph, hem nesne depolama, hem blok depolama hem
de dosya sistemi olarak kullanılabilecek bir depolama
platformudur. İlk büyük yayını Temmuz 2012’de yapılan
Ceph kesinlikle yeni bir ürün değil. Teknoloji Radarı’nın
bu sayısında, özel bulutlar için bunun önemli bir yapı
taşı olduğunun altını çizmek istiyoruz. Özellikle çekici
olan yanı RADOS Gateway bileşenini, nesne deposunu
Amazon S3 ve OpenStack Swift API’lerle uygumlu bir
RESTful arayüzü üzerinden açabiliyor olması.
Kubernetes, Google’ın, giderek daha yaygın bir
senaryo haline gelmekte olan konteynırların bir
makine kümesine konuşlandırılması sorununa cevabını
oluşturuyor. Bu, Google’ın kendi içinde kullandığı bir
çözüm değil ancak Google’da başlayan bir açık kaynak
projesi olarak önemli oranda harici katkı aldı. Docker
ve Rocket konteynır formatları olarak destekleniyor ve
sunulan hizmetler arasında sağlık yönetimi, kopyalama
ve bulgu bulunuyor. Bu alandaki benzer bir çözüm
olan Rancher, yine konteynırların bir makine kümesi
üzerine konuşlandırılmasına imkan sağlayan bir açık
kaynak çözümüdür. Yaşam boyu yönetim, izleme,
sağlık kontrolleri ve bulgu gibi hizmetler sunuyor. Bu
kapsamda ayrıca tamamen konteynırlaştırılmış ve
Docker bazlı bir işletim sistemi bulunuyor. Büyük çapta
konteynırlaştırmaya odaklanma ve çok küçük olan ayak
izi Rancher’ın en önemli avantajlarını oluşturuyor.
© Kasım 2015, ThoughtWorks, Inc. Tüm hakları saklıdır.
Mesosphere DCOS Mesos üzerine kurulmuş bir
platformdur. Altyapıdaki makinelerin üzerine bir
soyutlama katmanı sağlar ve size DCOS için geliştirilmiş
hizmetlerin devasa ölçeklerde çalışmasına izin veren
bir depolama ve bilgi işlem havuzu verir. (Hadoop,
Spark ve Cassandra ve benzerleri için şimdiden destek
sağlanmaya başladı). Bunlar, şu andaki daha mütevazı
iş yükleri için muhtemelen aşırı güç kullanmak anlamına
gelebilir (bunlar için geleneksel Mesos hâlâ en uygunu
olabilir), ancak Mesosphere’in DCOS’yi bir genel amaçlı
sistem olarak konumlandırmaya çalışmaya başlayıp
başlamadığını görmek ilginç olacaktır.
Linux bazlı modern bulut ve konteynır çözümleriyle
karşılaştırıldığında Windows Server Core bile çok büyük
ve hantaldır. Microsoft buna reaksiyon gösteriyor
ve Windows Server’ın daha sadeleştirilmiş versiyonu
olan Nano Server’ın ilk incelemelerini sundu. Nano
Server GUI yığınını, 32-bit Win32 desteğini, yerel orijin
ve uzaktan masaüstü desteğini aşağı çekerek disk
üzerindeki boyutunu 400 MB’ye çekme sonucunu elde
ediyor. İlk incelemeler ile çalışmak zordur ve nihai çözüm
CoreCLR kullanmakla sınırlı olacaktır ancak .NET bazlı
çözümler kullanmakla ilgilenen şirketler Nano Server
kesinlikle bu aşamada bir göz atılmayı hak ediyor.
Presto, etkileşimli analiz iş yükünü kaldırmak üzere
tasarlanıp optimize edilmiş bir açık kaynak dağıtık SQL
sorgulama motorudur. Presto’nun devasa paralel işlem
mimarisi – gelişmiş kod üretme teknikleri ve bellek içi
işlem sıralamalarıyla birlikte – bu motoru son derece
ölçeklendirilebilir hale getiriyor. Karmaşık sorgular,
birleşimler, toplamlar ve pencere fonksiyonları gibi geniş
bir ANSI SQL alt serisini destekliyor. Hive, Cassandra,
MySQL ve PostgreSQL gibi geniş bir veri kaynağı
yelpazesine verilen destekle gelen Presto böylece, bir
şirketin veri depoları arasında etkileşimli analitik ara
yüzünü birleştiriyor. Uygulamalar, JDBC ara yüzünü
kullanarak Presto’ya bağlanabiliyorlar.
Yaygın şikayetlerimizden biri işte zeki özel yazılımlara
yönlendirmesi ve bu yüzden uygulama sunucuları ve
işletme hizmet sürücülerinin kritik uygulama mantığını
kullanmaya yönelmesidir. Bu, amaca pek uygun olmayan
ortamlarda karmaşık programlamalar yapılmasını
gerektirir. Bu hastalığın aşırı hırslı API Kapısı
ürünlerinde endişe verici bir şekilde yeniden ortaya
çıktığını görüyoruz. API Kapıları bazı jenerik kaygılarla
baş etmek için yararlı olabilir – örneğin kimlik kontrolü
ve hız sınırlama – ancak örneğin veri dönüşümü veya
kural işleme gibi alanda zekilerin, destekledikleri alanla
yakın ilişki içinde olan üretim ekipleri tarafından kontrol
edilebilecekleri uygulama ve hizmetlerin için kalmaları
gerekir.
TEKNOLOJİ RADARI KASIM 2015 | 10
PLATFORMS continued
HTTP Strict Transport Security (HSTS) is a now widely
supported policy that allows websites to protect
themselves from downgrade attacks. A downgrade
attack in the context of HTTPS is one that can cause
users of your site to fall back to HTTP rather than HTTPS,
allowing for further attacks such as man-in-the-middle
attacks. By using the server header, you inform browsers
that they should only use HTTPS to access your website,
and should ignore downgrade attempts to contact
the site via HTTP. Browser support is now widespread
enough that this easy-to-implement feature should be
considered for any site using HTTPS.
The Elastic Container Service (ECS) is AWS’ entry into
the multihost Docker space. Although there is a lot of
competition in this area, there aren’t many off-premises
managed solutions out there yet. Although ECS seems
like a good first step, we are worried that it is overly
complicated at the moment and lacks a good abstraction
layer. If you want to run Docker on AWS, though, this tool
should certainly be high on your list. Just don’t expect it
to be easy to get started with.
Ceph is a storage platform that can be used as object
storage, as block storage, and as a file system, typically
running on a cluster of commodity servers. With its
first major release having been in July 2012, Ceph is
certainly not a new product. We do want to highlight it
on this Technology Radar as an important building block
for private clouds. It is particularly attractive because
its RADOS Gateway component can expose the object
store through a RESTful interface that is compatible with
Amazon S3 and the OpenStack Swift APIs.
Kubernetes is Google’s answer to the problem of
deploying containers into a cluster of machines, which
is becoming an increasingly common scenario. It is not
the solution used by Google internally, but an opensource project that originated at Google and has seen a
fair share of external contributions. Docker and Rocket
are supported as container formats and services offered
include health management, replication, and discovery. A
similar solution in this space is Rancher, an open-source
solution that also allows deployment of containers
into a cluster of machines. It provides services such
lifecycle management, monitoring, health checks, and
discovery. Also included is a completely containerized
operating system based on Docker. The broad focus
on containerization and very small footprint are key
advantages for Rancher.
© November 2015, ThoughtWorks, Inc. All Rights Reserved.
Mesosphere DCOS is a platform built on top of Mesos. It
provides an abstraction over underling machines, giving
you a pool of storage and compute that allows services
built for DCOS to operate at massive scale (Support is
already there for Hadoop, Spark and Cassandra, among
others). This is probably overkill for more modest
workloads at the moment (where plain old Mesos could still
be a good fit), but it will be interesting to see if Mesosphere
starts trying to position DCOS as a general-purpose system.
In contrast to modern cloud and container solutions
based on Linux, even Windows Server Core is large
and unwieldy. Microsoft is reacting and has provided
the first previews of Nano Server, a further-strippeddown version of Windows Server that drops the GUI
stack, 32-bit Win32 support, local logins and remote
desktop support, resulting in an on-disk size of about
400MB. The early previews are difficult to work with,
and the final solution will be restricted to using the
CoreCLR, but for companies that are interested
in running .NET-based solutions, Nano Server is
definitely worth a look at this stage.
Presto is an open source distributed SQL query
engine designed and optimized for running interactive
analytics workloads. Presto’s massively parallel
processing architecture - combined with advanced
code-generation techniques and in-memory processing
pipelines - makes it highly scalable. It supports a large
subset of ANSI SQL including complex queries, joins,
aggregations and window functions. Presto comes with
support for a wide range of data sources including
Hive, Cassandra, MySQL and PostgreSQL, thereby
unifying the interactive analytics interface across data
stores of an organization. Applications can connect to
Presto using its JDBC interface.
One of our common complaints is the pushing of
business smarts into middleware, resulting in application
servers and enterprise service buses with ambitions
to run critical application logic. These require complex
programming in environments not well suited to the
purpose. We’re seeing a worrying re-emergence of this
disease with overambitious API Gateway products. API
Gateways can provide utility in dealing with some generic
concerns - for example, authentication and rate-limiting
- but any domain smarts such as data transformation
or rule processing should live in applications or services
where they can be controlled by product teams working
closely with the domains they support.
TECHNOLOGY RADAR NOVEMBER 2015 | 10
PLATFORMLAR devamı
Uygulamaların olgun bulut tedarikçilerine
konuşlandırılmasından tartışmasız verim artışları
sağlandığını gördük. Bu verim artışının büyük bölümü
ekiplerin kendi hizmetlerini yüksek bir özerklik ve
sorumluluk düzeyinde konuşlandırabilme becerisinden
geliyor. Şu anda düzenli olarak kuruluşların içinde
sunulan Yüzeysel Özel Bulut uygulamaları ile
karşılaşıyoruz ve bunlarda temel sanallaştırma
platformlarına “bulut” etiketi veriliyor.
© Kasım 2015, ThoughtWorks, Inc. Tüm hakları saklıdır.
Ekipler çoğu zaman kendilerine kısıtlı bir sabit hizmet
tipleri grubu veriyor ve merkezi olarak yönetilen
“işletme şablonlarına” erişim sınırlı olurken bunları
özelleştirme kabiliyeti de çok az oluyor ve geçici ve etkili
olmayan yama çözümlerine yol açılıyor. Ağ, güvenlik
duvarı ve depo gibi manuel olarak hazırlanan altyapı
konuşlandırma hızını düzenli olarak kısıtlamaya devam
ediyor. Kuruluşlara yetersiz özel bulut sunumlarının
kullanılmasına karar vermenin maliyetlerini tam olarak
değerlendirmelerini tavsiye ediyoruz..
TEKNOLOJİ RADARI KASIM 2015 | 11
PLATFORMS continued
We’ve seen the indisputable productivity gains that come
from deployment of applications and services into mature
cloud providers. Much of that gain comes from the ability
of teams to deploy and operate their own services with
a high degree of autonomy and responsibility. We are
now regularly coming across Superficial Private Cloud
offerings within organizations, where basic virtualization
platforms are being given the “cloud” label. Often teams
© November 2015, ThoughtWorks, Inc. All Rights Reserved.
can self-provision a restricted set of fixed service types
with limited access and little ability to customize the
centrally governed “enterprise blueprints,” leading to
kludge solutions. Deployment pace regularly remains
constrained by manually provisioned infrastructure
such as network, firewall and storage. We encourage
organizations to more fully consider the costs of
mandating the use of an inadequate private cloud offering.
TECHNOLOGY RADAR NOVEMBER 2015 | 11
ARAÇLAR
Browsersync kullanan birçok ThoughtWork ekibinden
değerlendirmeler aldık. Web uygulamalarını verdiğimiz
30
29 arasında test
cihazların sayısı arttıkça, bu farklı cihazlar
yapmaya harcanması gereken çaba da aynı şekilde artıyor.
Browsersync, çeşitli mobil veya28masaüstü tarayıcılar
23
arasında manuel tarayıcı testini eşzamanlayarak bu çabayı
22
keskin bir şekilde azaltabilen
ücretsiz bir açık kaynak
27
araçtır. Hem CLI hem de UI seçenekleri sunan bu araç
15 gibi
21
pipeline dolu olarak geliştirildi ve form
doldurma
17
tekrar tekrar yapılan
görevleri
otomatik
hale
getiriyor.
26
73
72
39
32 veya OS X makinanızda
Daha önce Docker’ı lokal Windows
31
33
40
kolay kullanmanın bir yöntemi olarak boot2docker’i
tavsiye etmiştik. Şimdi Docker Toolbox boot2docker’in
41
yerine geçiyor
ve aynı
zamanda bazı34araçlar ekliyor.
52
35
Konteynırlarınızı yönetmek
için Kitematic ve
çoklu Docker
42
kurulumunu yönetmek için Docker Compose (sadece Mac
43
için) bulunuyor. Boot2docker’in yerini hızlıca36alabilen bu
38
araç güvenli bir şekilde kullanılabilir
ve sizin için model
44
yükseltmeyi bile yapabilir.
45
53
37
46 kod havuzlarında
Şifre ve erişim jetonları gibi sırların
47
güvenli bir şekilde saklanması artık, örneğin önceki
48 ve
Technology Radar’da değindiğimiz
git-crypt
49Blackbox
54
50
gibi giderek artan sayıda araç tarafından destekleniyor.
75
86
76
59
78
77
60
20
13
iOS veya OS X projelerinde bağımlılık yönetimi,
daha önce
16
14
tamamen manüel
veya
CocoaPods
kullanımı
kapsamında
19
25
12
tamamen otomatik oluyordu. Carthage
11 ile yeni bir
6
ortaya yol bulundu. Carthage bağımlılıkları
yönetiyor –
10
5
çerçeveleri
indiriyor, inşa ediyor veya
güncelliyor
3 – ancak
9
24
18
çerçevelerin projenin yapısına entegrasyonunu projeye
4
bırakıyor. CocoaPods ise aksine proje8yapısını alıyor2ve
7
kurulumu inşa ediyor. Carthage’ın sadece, iOS 7 ve1 altında
bulunmayan
dinamik çerçevelerle
çalışabildiğiniBENİMSE
belirtmek
DURDUR DEĞERLENDİR
PİLOT KULLANIM
gerekiyor.
74
61
62
64
63
79
65
80
66
81
67
82
68
56
83
70
58
BENİMSE
84
69
57
85
71
PİLOT KULLANIM
DEĞERLENDİR
DURDUR
89
Bu araçların vardığına rağmen sırların hâlâ korumasız
102
olarak saklanması çok yaygındır. Aslında bu o kadar
93
yaygındır ki, 88
AWS bilgilerini bulmak için otomatik istismar
101
yazılımı,
Bitcoins
kazısı92yapmak için dönüştürülmüş
EC2
87
instance’ları kullanılıyor ve sonuçta saldırganın elinde
100
Bitcoins, hesap sahibinin elinde ise fatura kalıyor. Gitrob
91 benimseyerek kuruluşun GitHub
benzer bir yaklaşımı
99
havuzlarını tarıyor ve havuza konulmamış olması gereken
hassas bilgileri içeriyor olabilecek bütün dosyaları
işaretliyor.90Tabii ki bu reaktif bir 98
yaklaşım. Gitrob ekipleri
ancak (neredeyse) çok geç olduğu zaman uyarabiliyor. Bu
97
nedenle Gitrob ancak hasarı
azaltan tamamlayıcı bir araç
94
95
96
olabilir.
51
55
BENİMSE
56. Composer
57. Mountebank
58. Postman
PİLOT KULLANIM
59. Browsersync yeni
60. Carthage yeni
61. Consul
62. Docker Toolbox yeni
63. Gitrob yeni
64. GitUp yeni
65. Hamms
66. IndexedDB
67. Polly
68. REST-assured
69. Sensu
70. SysDig yeni
71. ZAP
© Kasım 2015, ThoughtWorks, Inc. Tüm hakları saklıdır.
DEĞERLENDİR
72. Apache Kafka
73. Concourse CI
74. Espresso
75. Gauge
76. Gor
77. ievms
78. Let’s Encrypt
79. Pageify
80. Prometheus
81. Quick
82. RAML
83. Security Monkey
84. Sleepy Puppy
85. Visual Studio Code
DURDUR
86. Citrix for development
TEKNOLOJİ RADARI KASIM 2015 | 12
TOOLS
We’ve had rave reviews from a number of ThoughtWorks
teams using Browsersync. As the number of devices
we
30
29 the amount
deliver web applications to grows, so does
of effort that must be devoted to testing across these
different devices. Browsersync 28
is a free, open source tool
23
that can dramatically reduce this effort by synchronizing
22
manual browser testing27across multiple mobile or desktop
browsers. Providing both a CLI and a UI option, the tool
15 tasks
21
is build-pipeline friendly and automates
repetitive
17
such as form filling.
26
73
72
32
31
33
40
Previously, we recommended
boot2docker
as a way of
easily running Docker on your local Windows or OS X
41
machine. Docker
Toolbox now replaces
boot2docker,
52
34
35
adding some tooling
42as well. Now included is Kitematic
for managing your containers, as well as Docker
43
Compose for managing multi-Docker setup36(Mac only).
38
It can be used safely as a44drop-in replacement for
boot2docker, and53it will even 45
handle the upgrade
37 for you.
46
Safely storing secrets such as passwords
and access
47
tokens in code repositories is now supported by
a growing number of tools -54for example,
git-crypt
48
49
50
and Blackbox, which we mentioned in the previous
51
75
86
76
59
78
77
60
20
Dependency management in iOS and OS13X projects 16
14
used to be either
completely
manual or completely
19
25
12
automatic as part of using CocoaPods.
11With Carthage,
6
a new middle ground has become available.
Carthage
10
5
manages
dependencies - it downloads,
builds and
3
9
24
18
updates frameworks - but it leaves the integration of the
4
8
frameworks into the build of the project
to the project.
2
7
This is in contrast to CocoaPods, which basically takes
1
over the
project
structure andTRIAL
build setup. It should
HOLD
ASSESS
ADOPT
be noted that Carthage can only deal with dynamic
frameworks, which
39 are not available on iOS 7 and below.
74
61
62
64
63
79
65
80
66
81
67
82
68
56
83
70
58
ADOPT
84
69
57
85
71
TRIAL
ASSESS
HOLD
89
Technology Radar. Despite the availability 102
of these
tools, it is still, unfortunately, all too common that
93
secrets are 88
stored unprotected. In fact, it is so common
101find AWS
that automated
exploit
software is used to
87
92
credentials and spin up EC2 instances to mine Bitcoins,
100
leaving the attacker with the Bitcoins and the account
91 Gitrob takes a similar approach
owner with the bill.
99
and scans an organization’s GitHub repositories,
flagging all files that might contain sensitive
98
information
90 that shouldn’t have been pushed to the
repository. This is obviously a reactive approach. Gitrob
can only alert teams when97it is (almost) too late. For
94
95
96
this reason, Gitrob can
only ever be a complementary
tool, to minimize damage.
55
ADOPT
56. Composer
57. Mountebank
58. Postman
TRIAL
59. Browsersync
60. Carthage
61. Consul
62. Docker Toolbox
63. Gitrob
64. GitUp
65. Hamms
66. IndexedDB
67. Polly
68. REST-assured
69. Sensu
70. SysDig
71. ZAP
© November 2015, ThoughtWorks, Inc. All Rights Reserved.
ASSESS
72. Apache Kafka
73. Concourse CI
74. Espresso
75. Gauge
76. Gor
77. ievms
78. Let’s Encrypt
79. Pageify
80. Prometheus
81. Quick
82. RAML
83. Security Monkey
84. Sleepy Puppy
85. Visual Studio Code
HOLD
86. Citrix for development
TECHNOLOGY RADAR NOVEMBER 2015 | 12
ARAÇLAR devamı
Git kafa karıştırıcı olabilir. Gerçekten kafa karıştırıcı
olabilir. Hatta basit bir trunk bazlı geliştirme prosesi olarak
kullanıldığında bile nasıl çalıştığı konusunda birçok nüans
vardır ve bu yüzden insanlar bazen kendi kendilerini
çıkmazlara sokabilirler. Böyle bir durumda Git’in cihazın
içinde nasıl çalıştığını yakından bilmek çok yararlı olacaktır
ve GitUp size tam da bunu sağlayan Mac bazlı bir araçtır.
GitUp siz normal Git komutları yazdıkça neler olduğunun
bir grafik temsilini sunar. Çeşitli Git komutlarını öğrenirken
aynı zamanda her birinin siz onları kullandıkça neler
yaptığını anlayabilirsiniz. GitUp hem Git konusunda yeni
olan hem de Git tecrübesi daha fazla olan kişiler için
kullanışlı bir araçtır.
Bizim .NET projeleri üzerinde çalışan bazı ekiplerimiz
Polly’yi mikroservis bazlı hizmetleri inşa etmek için yararlı
bir araç olarak tavsiye etti. Polly, Retry, Retry Forever
ve Wait and Retry gibi geçici istisna yönetimi politikaları
ve Circuit Breaker modelinin akıcı bir şekilde ifade
edilmesini teşvik eder. Şu anda başka dillerde de benzer
kütüphaneler bulunuyor (örneğin Java için Hystrix) ve
Polly, .NET topluluğu tarafından sunulan ve memnuniyetle
karşılanan bir katkı oldu. Polly ile iyi entegre olan bir
örnek olan Brighter, komutların taleplerinin uygulanması
için iskele oluşturan bir başka küçük açık kaynak .Net
kütüphanesidir. İki kütüphanenin birleştirilmesi, özellikle
Ports and Adapters modeli ve CQRS bağlamında yararlı bir
devre kesme işlevselliği sağlar. Ayrı ayrı kullanılabilmekle
birlikte ekiplerimiz birlikte iyi çalışabildiklerini tesadüfen
keşfetti.
Birçok izleme aracı, makine veya örnek konsepti etrafında
inşa edilmiştir. Phoenix Server gibi modeller ile Docker
gibi araçların giderek artan kullanımı bunun altyapıyı
modellemek için giderek daha da kullanışsız hale gelen bir
yöntem olduğunu gösteriyor: Örnekler geçici hale geliyor
ve hizmetler ise kalıcı olan şeylerdir. Sensu bir instance’ın
kendini belli bir rol oynuyormuş gibi kaydetmesine izin
verir ve Sensu onu bu bazda izler. Zaman içinde, bu rolü
oynayan instance’lar gelir ve gider. Bu faktörler ve bu
aracın giderek olgunlaşmakta olduğunu dikkate alarak
Sensu’yu yeniden radara almaya karar verdik.
SysDig’in Teknoloji Radarı’ndaki en yeni araç olmamasına
rağmen bu kadar çok kişinin onun adını bile duymamış
olması bizi şaşırtmaya devam ediyor. Linux sistem sorun
gidermeyi amaçlayan bir tak-çıkar açık kaynak CLI olan
SysDig’in oldukça güçlü özellikleri var. En sevdiğimiz
© Kasım 2015, ThoughtWorks, Inc. Tüm hakları saklıdır.
şeylerden biri, sorun yaşanan bir makinede, sistemdeki
olayların izini oluşturarak sonradan bunları sorgulayarak
neler olduğunu görebilmeniz. SysDig aynı zamanda
konteynırlara birlikte çalışma desteğine de sahip ve bu da
daha önce zaten kullanışla olan bir aracı daha da güçlü
hale getiriyor.
Birçok geliştirme ekibi, basit sürekli entegrasyon
sunucularından, çoğu zaman üretime kadar ulaşan birden
çok ortamı kapsayan Sürekli Dağıtım pipeline’larına
geçiyorlar. Böyle bir pipeline’ı başarıyla uygulamak ve
sürdürülebilir bir şekilde yürütmek yapılmış pipeline’lar
ve artifaktlara birinci sınıfı vatandaş muamelesi yapan
bir CI/CD araçları gerektirir ve maalesef bunların sayısı
çok fazla değildir. Bu alana yeni giren ve gelecek vaat
eden bir araç olan Concourse CI’yi deneyen ekiplerimiz,
konteynırlarda çalışan yapıların, temiz ve kullanılabilir
bir UI’leri olmasına imkan veren ve kar tanesi yapım
sunucuların kullanımından caydıran kurulumundan büyük
heyecan duydular.
Espresso bir fonksiyonel test aracıdır. Küçük çekirdekli
API’si karmakarışık ayrıntılarını saklar ve özlü testler
yazılmasına ve daha hızlı ve güvenli test uygulaması
yapılmasına yardımcı olur.
Gauge, hafif ve platformlar arasında çalışan bir test
otomasyon aracıdır. Spesifikasyonlar serbest form
Markdown’da yazılmıştır ve böylece test durumları iş
dilinde yazılabilir ve mevcut herhangi bir belge formatıyla
bütünleştirilebilir. Desteklenen diller tek çekirdekli bir
uygulamaya eklenti olarak uygulanır ve böylece dil
uygulamaları arasında tutarlılık sağlanır. ThoughtWorks’ün
açık kaynak olarak sunduğu bu araç aynı zamanda
desteklenen bütün platformlar için alışılmışın dışında
paralel uygulamayı da destekler.
Internet Explorer kullanımının azalmasına rağmen
IE kullanıcı bazı, pazar payı olarak önemsiz değildir
ve tarayıcının uyumluluğunun test edilmesi gerekir.
Geliştirme için UNIX bazlı sistemlerin keyfini tercih
ediyorsanız bu çok sorunlu bir hale gelir. Bu ikilem
karşısında yardımcı olmak amacıyla ievms Windows
tarafgından dağıtılan VM görselleri ile VirtualBox’ı bir araya
getirerek, 6’dan Edge’e kadar çok çeşitli IE versiyonlarının
kurulumunu ve test edilmesini otomatikleştiren bir
yardımcı script sunuyor.
TEKNOLOJİ RADARI KASIM 2015 | 13
TOOLS continued
Git can be confusing. Really confusing. And even when
it’s used in a simple trunk-based development process,
there are still enough nuances to how it works that
people can tie themselves in knots from time to time.
When this happens, having an understanding of how
Git works under the hood is very useful, and GitUp
is a Mac-based tool that gives you exactly that. GitUp
provides a graphical representation of what is happening
as you type normal Git commands into the terminal.
You can learn the various Git commands while also
understanding what each one does as you use it. GitUp
is a useful tool for both people new to Git and those with
more Git experience.
Several of our teams working on .NET projects have
recommended Polly as being useful in building
microservice-based systems. It encourages the fluent
expression of transient exception-handling policies and
the Circuit Breaker pattern, including policies such as
Retry, Retry Forever and Wait and Retry. Similar libraries
already exist in other languages (Hystrix for Java for
example), and Polly is a welcome addition from the
.NET community. Integrating well with Polly is Brighter.
Brighter is another small open source .Net library that
provides scaffolding to implement command invocation.
Combining the two libraries provides useful circuitbreaking functionality especially in the context of the
Ports and Adapters pattern and CQRS. Although they can
be used separately, in the wild our teams find they work
well together.
Many monitoring tools are built around the concept of
the machine or instance. The increasing use of patterns
like Phoenix Server and tools like Docker mean this is
an increasingly unhelpful way to model infrastructure:
Instances are becoming transient while services are
the things that persist. Sensu allows an instance to
register itself as playing a particular role, and Sensu then
monitors it on that basis. Over time, different instances
playing that role may come and go. Given these factors
and the increasing maturity of the tool, we felt it was
time to bring Sensu back on to the radar.
Although SysDig isn’t the newest tool on the
Technology Radar, we’re still surprised by how many
people haven’t heard of it. A pluggable open source
© November 2015, ThoughtWorks, Inc. All Rights Reserved.
CLI for Linux system troubleshooting, SysDig has some
pretty powerful features. One of the key things we like
is the ability to generate a system trace on a machine
that is experiencing difficulties, which you can then
interrogate afterward to find out what was happening.
SysDig also contains support for working with
containers, something that makes a previously useful
tool even more powerful.
Many development teams are making the move
from simple continuous integration servers to
Continuous Delivery pipelines, often spanning
multiple environments, reaching into production. To
implement such a pipeline successfully and operate it
in a sustainable way requires a CI/CD tool that treats
build pipelines and artifacts as first-class citizens; and
unfortunately there aren’t many. Concourse CI is a
promising new entrant in this field, and our teams that
have tried it are excited about its setup, which enables
builds that run in containers, has a clean, usable UI and
discourages snowflake build servers.
Espresso is an Android functional-testing tool. Its smallcore API hides the messy implementation details and
helps in writing concise tests, with faster and reliable
test execution.
Gauge is a lightweight cross-platform test-automation
tool. Specifications are written in free-form Markdown,
so test cases can be written in the business language and
can be incorporated into any existing documentation
format. Supported languages are implemented as
plugins to a single core implementation, which ensures
consistency across language implementations. This tool,
open sourced by ThoughtWorks, also supports parallel
execution out of the box for all supported platforms.
Despite the shrinking usage of Internet Explorer, for
many products the IE user base is not an insignificant
share of the market, and browser compatibility
needs to be tested. This is particularly troublesome
if you prefer the joys of a UNIX-based system for
development. To aid in this dilemma, ievms provides a
utility script that brings together Windows-distributed
VM images and VirtualBox to automate the setup and
testability of various IE versions, from 6 up to Edge.
TECHNOLOGY RADAR NOVEMBER 2015 | 13
ARAÇLAR devamı
Her geçen gün daha fazla sitenin HTTPS’yi uygulayarak
kendi kullanıcılarının korunmasına yardımcı olmayı ve
web sitesinin bir bütün olarak sağlamlığını korumayı
amaçlamasına rağmen bu işlere henüz başlamamış
daha birçok site var. Ayrıca giderek daha fazla kişinin,
işletmelerinde ilave güvenlik garantisi sağlama amacıyla
HTTPS kullandığını görüyoruz. HTTPS’nin daha geniş
çapta benimsenmesinin önündeki önemli engellerden
biri öncelikle bir sertifika alma prosesidir. Maliyetin
dışında prosesin kendisi düzgün işlemekten çok uzak.
Yeni bir Sertifika Otoritesi olan Let’s Encrypt, bütün
bunları çözmeyi amaçlıyor. Birincisi sertifikaları ücretsiz
veriyor. İkincisi, belki de daha önemlisi, aynı zamanda
son derece kolay kullanılan bir komut satırı API’si vererek
sertifika çıkarma, yükseltme ve kurma prosesini tam
otomatik hale getirmeyi kolaylaştırmasıdır. Şu anda beta
sürümünde olan Let’s Encrypt’in giderek daha fazla web
sitesinin HTTPS’ye geçmesine yardımcı olmak açısından
devrimci bir etki yapma ve aynı zamanda güvenliğe önem
verenler için iyi ve otomatikleştirilebilir araçların nasıl
olması gerektiğini gösterme şansına sahip olduğunu
düşünüyoruz.
UI otomasyon testleri için sayfa nesneleri inşa etmek
amacıyla kullanılan bir Ruby kütüphanesi olan Pageify
daha hızlı test uygulaması ve kod okunabilirliğine
odaklanıyor. Sayfa nesnelerini dinamik bir şekilde
tanımlamak, işletmek ve açıklamak için basit API’ler
sunuyor ve unsurları DOM’da karmaşık hiyerarşiler
içinde ele alırken bile okunabilir kod yazımına imkan
veriyor. WebDriver ve Capybara entegrasyonunu birlikte
sunuyor.
SoundCloud, izleme ve alarm verme araç kiti olan
Prometheus’u kısa bir süre önce açık kaynak haline
getirdi. Üretim sistemlerindeki Graphite ile yaşanan
zorluklara tepki olarak geliştirilen Prometheus, öncelikle
pull tabanlı bir HTTP modelini destekliyor (ancak daha
Graphite benzeri bir push tabanlı modeli de destekleniyor.
Ayrıca alarmlara da destek vermesi, onu operasyonel araç
setinizin aktif bir parçası haline getiriyor. Bu metin yazıldığı
sırada Prometheus henüz sadece 0.15.1 sürümündeydi
ancak hızla dönüşüyordu. En yeni ürünün temel zaman
serisi DB ve çok boyutlu endeksleme olanaklarına
odaklanırken, daha geniş bir ön yüz grafik araçları
yelpazesine aktarabilmeye izin verdiğini memnuniyetle
gördük.
© Kasım 2015, ThoughtWorks, Inc. Tüm hakları saklıdır.
RESTful API’ler sunun hizmetlerin sayısı arttıkça
bunların belgelenmesi de giderek önem kazanıyor.
Daha önce Swagger’den söz etmiştik. Bu Teknoloji
Radarı’nda da RESTful API modelleme diline (RAML)
dikkat çekmek istiyoruz. Ekiplerimiz bunun Swagger’dan
daha hafif olduğunu ve odak noktasını mevcut API’lere
belge eklemekten yeni API’ler tasarlamaya taşıdığını
düşünüyorlar.
Sleepy Puppy Netflix’in yakın geçmişte açık kaynak
olarak sunduğu bir geciktirilmiş siteler arası skript yazma
(XSS) iş yükü yönetimi çerçevesidir. Saldırgan altyapıdaki
ikinci bir sisteme saldırmak istediğinde XSS hedefi aşma
uygulamasının zaaflarını test etmenize olanak sağlar. XSS,
OWASP Top10 listesinde yer alırken, bu framework’ün
çeşitli uygulamalar için otomatik güvenlik kontrollerine
yardım ettiğini görüyoruz. XSS yayılmasını uzun dönemler
boyunca yakalamayı, yönetmeyi ve izlemeyi kolaylaştırıyor
ve iş yükü ayarlanabiliyor. Sleepy Puppy aynı zamanda
ZAP gibi zaaf kontrol araçlarıyla entegre edilerek otomatik
güvenlik kontrollerinde kullanılan bir API ortaya çıkarıyor.
Visual Studio Code, Microsoft’un platformlar arasında
kullanıma açık ücretsiz IDE editörüdür. Git ile versiyon
kontrolü entegrasyonunu, sürekli entegrasyon
uygulamalarını desteklemek için çok yararlı buluyoruz.
Visual Studio Code aynı zamanda görevler üzerinde
harici araçlarla entegrasyon için de bir yöntem sunuyor.
Grunt/gulp görevleri otomatik olarak tespit ediliyor ve bu
görevlerin terminaller üzerinden yapılma ihtiyacı ortadan
kaldırılarak sadece editör kullanılarak yapılıyor. Docker
ekosisteminin büyümesiyle birlikte bu IDE, dockerfile için
geçerli komutların küçük parçaları ve tanımlarıyla destek
sağlıyor.
Birçok kuruluş hâlâ dağıtık veya farklı ülkelerdeki
geliştirme ekiplerini geliştirme için Citrix uzak
masaüstü kullanmaya zorluyorlar. Bu, basit bir güvenlik
modeli sağlasa da – varlıkların kuruluşun sunucularından
hiç çıkmadığı varsayılıyor – geliştirme için uzak masaüstü
kullanılmasının geliştiricilerin verimliliğini azalttığı kesindir.
Geliştiricilere hem dağıtık olmanın hem de uzak masa
üstünün maliyetini aktaracaksanız onlara daha ucuz
saatlik ücretler ödemenin çok fazla anlamı yoktur ve
giderek daha fazla yurtdışı tedarikçinin müşterilerine karşı
bu çekinceleri itiraf edeceklerini umuyoruz. Bir ‘temiz oda’
ile güvenlik sağlanmış, yerel geliştirmenin yapılabileceği
bir yurtdışı ortamı veya bir Hosted IDE (örneğin ievms)
kullanmak daha iyidir.
TEKNOLOJİ RADARI KASIM 2015 | 14
TOOLS continued
Although more sites every day are implementing HTTPS
to help protect their own users and improve the integrity
of the web as a whole, there are many more sites to go.
In addition, we see more and more people using HTTPS
within their enterprises, to provide additional security
guarantees. One of the main blockers to wider adoption
has been the process of getting a certificate in the first
place. Aside from the cost, the process itself is far from
slick. Let’s Encrypt, a new Certificate Authority, aims
to solve all this. First, it provides certificates for free.
Second, and arguably more important, it also provides
an extremely easy-to-use command-line API, making it
easy to fully automate the process of issuing, upgrading
and installing certificates. We think that Let’s Encrypt, in
beta at the moment, has the chance to be revolutionary
in terms of helping more of the web get on to HTTPS,
and at the same time showing what good, automatable
tools for the security-conscious should look like.
this Technology Radar we’d like to highlight the RESTful
API modeling language (RAML). Our teams feel that in
comparison to Swagger it is more lightweight and moves
the focus from adding documentation to existing APIs to
designing APIs.
Pageify is a Ruby library for building page objects for
UI automation tests, focusing on faster test execution
and code readability. It offers simple APIs to dynamically
define, operate and assert on the page objects, allowing
readable code even when handling elements with
complex hierarchies in the DOM. It bundles integration
for WebDriver and Capybara.
Visual Studio Code is Microsoft’s free IDE editor,
available across platforms. We find the version-control
integration with Git very beneficial to promoting
continuous integration practices. Visual Studio Code also
provides a means of integrating with external tools via
tasks, with autodetection of grunt/gulp tasks eliminating
the need for running grunt/gulp tasks via terminals and
simply using the editor. With the growth of the Docker
ecosystem, this IDE offers support for the dockerfile with
snippets and definitions of valid commands.
SoundCloud has recently open sourced its monitoring
and alerting toolkit, Prometheus. Developed in reaction
to difficulties with Graphite in its production systems,
Prometheus primarily supports a pull-based HTTP
model (although a more Graphite-like push model is also
supported). It also goes further by supporting alerts,
making it an active part of your operational toolset. As of
this writing, Prometheus is still only in release 0.15.1 but
is evolving rapidly. We’re glad to see the recent product
focus on core time-series DB and multidimensional
indexing capabilities while allowing for export to a wider
variety of front-end graphing tools.
With a growing landscape of services providing RESTful
APIs, it is becoming increasingly important to document
them. We have previously mentioned Swagger, and in
© November 2015, ThoughtWorks, Inc. All Rights Reserved.
Sleepy Puppy is a delayed cross-site scripting (XSS)
payload-management framework recently open sourced
by Netflix. It enables you to test vulnerabilities for XSS
past the target application when the perpetrator intends
to attack a secondary underlying system. With XSS
being one of the OWASP Top10, we see this framework
assisting with automated security checks for several
applications. It simplifies the capturing, managing and
tracking of XSS propagation over long periods of time,
with customizable payloads. Sleepy puppy also exposes
an API that can be integrated with vulnerability tools like
ZAP, for automated security checks.
Many organizations are still forcing distributed or
offshore development teams to use Citrix remote
desktop for development. Although this provides a
simple security model – assets supposedly never leave
the organization’s servers - using remote desktops for
development absolutely cripples developer productivity.
There’s not much point paying a cheaper hourly rate
for developers if you’re going to impose both the
distribution and remote-desktop burdens on them,
and we wish more offshore vendors would admit these
drawbacks to their clients. It’s much better to use either
a ‘clean room’ secured offshore environment where local
development can be done, or a Hosted IDE (e.g. ievms).
TECHNOLOGY RADAR NOVEMBER 2015 | 14
20
25
65
80
66
12
5
3
9
8
7
2
56
83
1
49 Swift
54
Kamuoyuna sunulmasının üzerinden
bir 48
yıl geçen
50
artık bizim Apple ekosistemindeki ilk tercihimiz haline 51
geldi. Yakın geçmişte Swift 2’nin de yayınlanmasıyla
55
birlikte bu dil projelerin çoğu için gerekli stabilite ve
performansı sağlayan bir olgunluk seviyesine yaklaşıyor.
Swift’in, özellikle araç deteği, refaktoring ve test
konularında hâlâ bazı sorunları var. Ancak bunların
Swift’ten kaçınma uyarısı yapmayı gerektirecek kadar
önemli olmadığını düşünüyoruz. Aynı zamanda önemli bir
konu da mevcut Objective-C kod temellerinin beklentileri
karşılama ihtimalinin düşük olmasıdır. Swift’in açık kaynak
yazılım olacağı duyurusu olumlu bir işarettir. Bunun
bir kez daha şirket içinde geliştirilmiş bir kodun kamu
havuzuna atılmasından ibaret kalmayacağını umuyoruz
çünkü Apple, kamuoyundan gelecek katkıları teşvik ve
kabul edeceklerini açık bir şekilde belirtti.
Mustache veya FreeMarker gibi şablon frameworkler
kod ile biçimlendirmeleri tek bir dosya da birleştirerek,
karmaşık ve dinamik içeriği uygulamayı amaçlıyor. Enlive,
programlama dilini HTML biçimlendirmesinden tamamen
ayıran ve belgenin bazı kısımlarını bulmak ve değiştirmek
için CSS seçicileri kullanan bir şambol framework’üdür.
Enlive, fonksiyonel programlamanın, karmaşık hareketleri
uygulama gücünü, ortak bir soyutlama üzerinde çalışan
bir dizi basit ve birleştirilebilir fonksiyon üzerinden
sergiliyor. Clojure’de çalışan ekiplerimiz bunun çok yararlı
ve düzgün bir araç olduğunu saptadılar.
PİLOT KULLANIM
90. Enlive yeni
91. React.js
92. SignalR yeni
93. Spring Boot
© Kasım 2015, ThoughtWorks, Inc. Tüm hakları saklıdır.
84
69
57
4
DURDUR ardından,
DEĞERLENDİR JavaScript
PİLOT KULLANIM
BENİMSE
Uzun yılların
dünyada en yaygın
kullanılan programlama dili haline geldi. Yine de, bu dilin
39 birçok kişi bu sorunları kütüphaneler
birkaç sournu var ve
32
31
kurarak veya hatta JaveScript’in üzerinde
çalışan
33
40
kendi dillerini uygulayarak (bunlardan CoffeeScript ve
ClojureScript’e daha41önce değinmiştik) çözmeye çalıştılar.
34
JavaScript’in52yeni versiyonu olan ECMAScript
6, halen
35
kullanımda olan eski 42
versiyonların sorunlarının birçoğuna
müdahale ediyor. Tarayıcı
43 desteği nadir olmakla birlikte
36
Babel gibi olgun derleyicilerin desteği sayesinde
daha 38
44
eski tarayıcılarda ECMAScript 6 yazabiliyorsunuz
45
53
37 için
desteklenmesini sağlayabiliyorsunuz.
Yeni projeler
ilk günden itibaren ECMAScript 6 46
ile başlamanızı tavsiye
ediyoruz.
47
82
68
DİLLER VE FRAMEWORK’LER
18
81
67
6
10
BENİMSE
87. ECMAScript 6
88. Nancy
89. Swift
63
16
14
19
11
24
62
61
13
70
58
85
71
BENİMSE
PİLOT KULLANIM
DEĞERLENDİR
DURDUR
89
102
93
88
87
101
92
100
91
99
98
90
97
94
95
96
HTML5 WebSockets kullanımıyla ilgili birçok çekincemiz
var. Sunucunun tarayıcı üzerinde aksiyonlar
başlatmasına izin vererek WebSockets, lugün World
Wide Web’in altında yatan bağlantısız talep/cevap
modelinden ayrılmış oluyor. Güvenlik de WebSockets
için ayrı bir risk oluşturuyor. Örneğin bu standart hiçbir
kökeni aşan talep politikası getirmiyor. Ancak, bazı
izleme veya alarm uygulamalarında WebSockets’in
çok yararlı olabileceğini kabul ediyoruz. Eğer bir .NET
WebSockets sunucusu inşa etmeniz gerekiyorsa,
SignalR, güçlü bir üretim uygulaması için ihtiyacınız
olan ilave kodların birçoğunu rahatlıkla uyguluyor.
Bu kapsamda, bağlantı jetonlarının validasyonu ve
şifreleme gerektiğinde SSL’nin aktive edilmesi gibi bazı
tavsiye edilen güvenlik uygulamaları da bulunuyor.
ThoughtWorks ekiplerinin SignalR’den çok memnun
olmasına rağmen, WebSockets konusunda kolları
sıvamadan önce düşünmeniz gereken bazı temel
sorunlar hâlâ var.
ASSESS
94. Axon yeni
95. Ember.js
96. Frege yeni
97. HyperResource yeni
98. Material U yeni
99. OkHttp yeni
100. React Native yeni
101. TLA+ yeni
102. Traveling Ruby yeni
DURDUR
TEKNOLOJİ RADARI KASIM 2015 | 15
20
25
63
65
16
80
14
19
11
66
12
5
3
9
56
83
2
4
HOLD years,
ASSESS
TRIAL
ADOPT
Over many
JavaScript has
grown to become
probably the most widely used programming language
39
in the world. Nevertheless,
the language itself has a
32
few problems that many have attempted
to address31
33
40
by using libraries or even by implementing their own
languages that run41on top of JavaScript (of which we’ve
34
mentioned 52
both CoffeeScript and ClojureScript
before).
35
42
ECMAScript 6, the new
version of JavaScript, addresses
many of the concerns of43the older versions currently
in use. Although browser support is scarce,36support 38
44
from mature transpilers like
Babel allows you to write
45
37
ECMAScript 6 and 53
have it supported
in older browsers.
For new projects, we strongly suggest
starting
with
46
ECMAScript 6 from day one.
47
48
54
A year after its public debut, Swift
is now
our49default
50
choice for development in the Apple ecosystem. With 51
the recent release of Swift 2, the language approaches
55
a level of maturity that provides the stability and
performance required for most projects. Swift still has
issues, especially around tool support, refactoring and
testing. However, we feel that these are not substantial
enough to warrant avoiding Swift. At the same time,
porting large, existing Objective-C codebases is unlikely
to pay off. The announcement that Swift will become
open source software is a further positive sign. We
are hopeful that this will not just be another dumping
of internally developed code into a public repository,
because Apple has clearly stated that community
contributions are encouraged and will be accepted.
Most templating frameworks like Mustache or FreeMarker
mix code with markup in a single file to implement
complex, dynamic content. Enlive is a Clojure-based
templating framework that completely separates
programming language from HTML markup and
employs CSS selectors to find and replace parts of the
document. Enlive demonstrates the power of functional
programming to implement complex behavior through
a series of simple, composable functions acting on a
common abstraction. Our teams working in Clojure have
found it to be a very useful and straightforward tool.
ADOPT
87. ECMAScript 6
88. Nancy
89. Swift
TRIAL
90. Enlive
91. React.js
92. SignalR
93. Spring Boot
© November 2015, ThoughtWorks, Inc. All Rights Reserved.
70
58
1
84
69
57
8
7
82
68
LANGUAGES & FRAMEWORKS
18
81
67
6
10
24
62
61
13
85
71
ADOPT
TRIAL
ASSESS
HOLD
89
102
93
88
87
101
92
100
91
99
98
90
97
94
95
96
We have a number of reservations about the use of
HTML5 WebSockets. By allowing the server to initiate
actions on the browser, WebSockets departs from the
connectionless, request/response model that underpins
the World Wide Web today. Security is another big
risk with WebSockets. For example, the standard does
not impose any cross-origin request policy. However,
we do recognize that in certain monitoring or alerting
applications, WebSockets can be very useful. If you need
to build a .NET WebSockets server, SignalR conveniently
implements much of the additional code you need for
a robust production application. This includes some
recommended security practices such as validating
connection tokens and activating SSL when encryption is
needed. Although ThoughtWorks teams have been very
happy with SignalR, there are still fundamental issues with
WebSockets that you should consider before diving in.
ASSESS
94. Axon
95. Ember.js
96. Frege
97. HyperResource
98. Material UI
99. OkHttp
100. React Native
101. TLA+
102. Traveling Ruby
HOLD
TECHNOLOGY RADAR NOVEMBER 2015 | 15
DİLLER VE FRAMEWORK’LER devamı
Spring Boot tek başına Springbased uygulamalarının
kolay kurulumunu sağlıyor. Yeni mikroservisler
oluşturmak için ideal olan Spring Boot’un
konuşlandırılması da kolay. Veri erişiminin zahmetini
de Hibernate eşleme sayesinde çok daha az klişe kod
kullanarak azaltıyor. Spring Boot’un Java hizmetlerini
basitleştirmesi hoşumuza gidiyor ancak birçok
bağımlılık hakkında kuşkulu olmayı öğrendik. Spring
henüz yüzeyin hemen altında pusuya yatıyor. Eğer
Java ile mikroservisler yazıyorsanız, DropWizard veya
Spark gibi bir mikro framework kullanarak, Spring aşırı
ağırlığına katlanmaksızın Spring Boot’un iyi yanlarından
faydalanmayı düşünebilirsiniz.
Genel bir model olarak CQRS hakkında hâlâ kaygılarımız
olmasına rağmen, bu yaklaşım belli yerlerde çok iyi
işleyebiliyor. Ancak bu spesifik durumlarda, CQRS’yi
gerektiği gibi çalıştırmak için geliştiriciye çok fazla iş
düşüyor. Axon, JVM üzerinde bu konuda yardımcı
olabilecek bir framework’tür ve biz de bunu belli bir
başarıyla kullandık. Şu anda mükemmel bir çözüm
sayılmazsa da gelişimini sürdürüyor ve her şeyi sıfırdan
yazmaktan çok daha anlamlı olabilir.
Birçok başka programlama dilinin ardından dil
kurtlarının mutlak favorilerinden biri olan Haskell, artık
JVM üzerinde ve Frege formunda da sunuluyor. Böylece
platforma tamamen fonksiyonel bir programlama dili
geliyor ve diğer JVM dilleri ve kütüphaneleriyle karşılıklı
çalışmayı kolaylaştırıyor.
HyperResource, RESTful API istemcisi inşa etmekte
kullanılan bir Ruby framework’üdür. Bu framework,
JSON’u HAL formatında kabul ediyor ve dinamik bir
şekilde hipermedya linkleri de bulunan bir model nesne
oluşturuyor. Bu framework henüz çocukluk çağında
olmakla birlikte, hizmetlerin keşfedilebilirliğini artırmak
ve özbelgelemeli protokoller sağlamak amacıyla
Richardson seviye 3 REST’i benimsemesini beğeniyoruz.
Material UI, Google’ın Material Design dilini kullanan
React uygulamalarında kullanılmak üzere yeniden
kullanılabilir bileşenler sağlıyor. Twitter Bootstrap ile
benzer bir yeri dolduran Material UI, hızla düzgün
ve sorunsuz çalışmaya başlamanızı sağlıyor ancak
uygulamanızın büyümesiyle birlikte aynı çekinceler
bulunmuyor. Elemental UI bir alternatif olarak
düşünmeye değer.
Square’in sunduğu bir Java HTTP bağlantı kütüphanesi
olan OkHttp, bağlantılar kurmak ve daha hızlı olan
HTTP/2 protokolünü desteklemek için akıcı bir arayüz
© Kasım 2015, ThoughtWorks, Inc. Tüm hakları saklıdır.
sağlar. HTTP/1.1 kullanırken bile, OkHttp bağlantı
havuzu oluşturarak ve şeffaf gzip sıkıştırma yaparak
performans artışı sağlayabiliyor. Hem engelleyici eş
zamanlı çağrıları hem de engelleyici ve eşzamanlı
olmayan çağrıları destekleyen OkHttp, çok yaygın
kullanılan Apache HttpClient yerine hazır bir yedek
olarak da kullanılabiliyor.
Platformlar arası mobil geliştirme dünyasına yeni
girenlerden, Facebook’un React Native’i, React.js
programlama modelini iOS ve Android geliştiricilere
getiriyor. React Native programları JavaScript ile
yazılıyor ancak Ionic gibi hibrit bir framework’ün aksine
React Native geliştiricilere hedef platform üzerindeki
yerli UI bileşenlerine erişim hakkı veriyor. Bu daha
önce gördüğümüz bir yaklaşım (örneğin Calatrava),
Ancak React Native şimdiden önemli büyüklükte bir
geliştirici topluluğu ve yapıya React.js’nin yarattığı ivme
konusunda ilham vermiş durumda. Bu platform mobil
uygulama geliştirmenin geleceğinde önemli bir rol
oynayabilir.
Mikroservisleri kullanan sistemler inşa etmek,
arıza izolasyonu ve testi konularında daha derin
düşünmemizi gerektirir. TLA+ bu senaryoların her
ikisinde yararlı olabilecek bir formel spesifikasyon
dilidir. Arıza izolasyonu için TLA+ sisteminizdeki
doğrudan izlenebilecek değişmez değerleri tanımlamak
için de kullanılabilir. Bir değişmez değer, örneğin bir
servise yönelik taleplerin bir başka serviye yönelik
taleplere oranı olabilir. Bu orandaki herhangi bir
değişim bir alarm verilmesine yol açar. TLA+ aynı
zamanda dağıtık sistemlerdeki hemen göze çarpmayan
tasarım kusurlarını saptamak için de kullanılıyor.
Örneğin Amazon, TLA+’ta yazılmış bir formel
spesifikasyona dayanan model kontrolünü kullanarak,
Dynamo DB’deki hemen göze çarpmayan hataları,
yayınlanmadan önce tespit etti. Sistemlerin çoğu için
formel spesifikasyonu yaratmak ve model kontrolünü
yapmak için gerekli yatırım muhtemelen fazlasıyla
büyük olacaktır; ancak kritik sistemler için – karmaşık
veya çok kullanıcılı olanlar için – alet kutumuzda
başka bir aracın bulunmasının çok değerli olduğunu
düşünüyoruz.
Traveling Ruby taşınabilir, çalıştırılmaya hazır,
programlardan bağımsız Ruby ikililerini, yorumlamalı
bir program, paketler veya ilave gem kurmaya
gerek olmaksızın dağıtmayı mümkün hale getiriyor.
Çalışmakta olan Ruby uygulamalarını, içinde çalıştıkları
geliştirme ortamından ayrıştırıyor.
TEKNOLOJİ RADARI KASIM 2015 | 16
LANGUAGES & FRAMEWORKS continued
Spring Boot allows easy setup of standalone Springbased applications. It’s ideal for pulling up new
microservices and easy to deploy. It also makes data
access less of a pain, thanks to the Hibernate mappings
with much less boilerplate code. We like that Spring Boot
simplifies Java services built with Spring but have learned
to be cautious of the many dependencies. Spring still lurks
just beneath the surface. If you’re writing microservices
with Java, you might also consider using DropWizard or
a microframework like Spark to get the benefits of Spring
Boot without the enormous weight of Spring.
While we still have some reservations about CQRS as
a general pattern, the approach can work very well in
specific places. In those specific situations, however, a
lot of work is left to the developer to properly execute
CQRS. Axon is a framework that can help with this on
the JVM, and we’ve used it with some success. Although
it certainly can’t be considered a perfect solution right
now, it continues to evolve and may make much more
sense than trying to write everything from scratch.
Following many other programming languages, one
of the language geeks’ absolute favourites, Haskell, is
now also available on the JVM in the form of Frege. This
brings a purely functional programming language onto
the platform, allowing for easy interoperability with
other JVM languages and libraries.
HyperResource is a Ruby framework for building
a RESTful API client. The framework accepts JSON
in HAL format and dynamically generates a model
object complete with hypermedia links. Although the
framework is still in its infancy, we like that it embraces
Richardson level 3 REST for better service discoverability
and self-documenting protocols.
Material UI provides reusable components for use in
React applications that implement Google’s Material
Design language. Filling a similar space to Twitter
Bootstrap, it gets you up and running quickly but doesn’t
have the same drawbacks as your application grows.
Elemental UI is worth investigating as an alternative.
OkHttp is a Java HTTP connection library from Square
that provides a fluent interface for creating connections,
as well as support for the faster HTTP/2 protocol.
© November 2015, ThoughtWorks, Inc. All Rights Reserved.
Even when using HTTP/1.1, OkHttp can provide
performance improvements via connection pooling and
transparent gzip compression. Supporting both blocking
synchronous and nonblocking asynchronous calls, it can
also be used as a drop-in replacement for the widely
used Apache HttpClient.
Yet another entrant into the cross-platform mobile
development world, Facebook’s React Native brings
the React.js programming model to iOS and Android
developers. React Native programs are written in
JavaScript, but unlike a hybrid framework such as
Ionic, React Native gives developers access to native UI
components on the target platform. This is an approach
we’ve seen before (e.g., Calatrava), but React Native has
already inspired a substantial developer community and
builds on the momentum generated by React.js. This
framework could play a significant role in the future of
mobile app development.
Building systems using microservices requires us to
think more deeply about failure isolation and testing.
TLA+ is a formal specification language that can be
useful in both these scenarios. For failure isolation,
TLA+ can be used to identify invariants in your system
that can be monitored directly. An invariant can be
the ratio of number of requests to one service to the
number of requests to a second service, for example.
Any change in this ratio would lead to an alert. TLA+
is also being used to identify subtle design flaws in
distributed systems. Amazon, for example, used modelchecking based on a formal specification written in
TLA+ to identify subtle bugs in Dynamo DB before
it was released to the public. For most systems, the
investment required to create the formal specification
and then perform model checking is probably too great;
however, for critical systems - complex ones, or those
with many users - we think it’s very valuable to have
another tool in our toolbox.
Traveling Ruby makes it possible to distribute portable,
ready-to-run, platform-agnostic Ruby binaries without
the need to install an interpreter, packages or additional
gems. It decouples running Ruby applications from the
development environment they run in.
TECHNOLOGY RADAR NOVEMBER 2015 | 16
ThoughtWorks, yazılım danışmanlığı, üretimi ve
ürünleri konusunda uzmanlaşmış tutkulu ve hedef
sahibi bireylerin oluşturduğu bir topluluk ve yazılım
şirketidir. Müşterilerimize yaşadıkları en büyük zorluk ve
mücadelelerde yardımcı olmak üzere alışılmışın dışında
düşünürken IT sektöründe bir devrim yapmanın ve
olumlu bir sosyal değişiklik yaratmanın yolunu arıyoruz.
Harika olmayı çok isteyen yazılım ekipleri için öncü
araçlar yapıyoruz.
© Kasım 2015, ThoughtWorks, Inc. Tüm hakları saklıdır.
Ürünlerimiz, kuruluşların sürekli gelişmelerine ve en kritik
ihtiyaçları için kaliteli yazılımlar üretmelerine yardımcı
oluyor. 23 Yıl önce kurulan ThoughtWorks, Chicago’daki
küçük bir şirketten 13 ülkedeki (Avustralya, Brezilya,
Kanada, Çin, Ekvador, Almanya, Hindistan, Singapur,
Güney Afrika, Türkiye, Birleşik Krallık ve ABD) 34 ofiste
3500’den fazla çalışanı olan bir şirkete dönüşmüştür.
TEKNOLOJİ RADARI KASIM 2015 | 17
ThoughtWorks is a software company and community
of passionate, purpose-led individuals that specialize
in software consulting, delivery and products. We think
disruptively to deliver technology to address our clients’
toughest challenges, all while seeking to revolutionize
the IT industry and create positive social change. We
make pioneering tools for software teams who aspire to
be great. Our products help organizations continuously
improve and deliver quality software for their most
© November 2015, ThoughtWorks, Inc. All Rights Reserved.
critical needs. Founded over 20 years ago, ThoughtWorks
has grown from a small group in Chicago to a company
of over 3500 people spread across 35 offices in 12
countries: Australia, Brazil, Canada, China, Ecuador,
Germany, India, Singapore, South Africa,Turkey, the
United Kingdom, and the United States.
TECHNOLOGY RADAR NOVEMBER 2015 | 17

Benzer belgeler