<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Codento - Blog</title>
	
	<link>http://blog.codento.com</link>
	<description />
	<lastBuildDate>Fri, 03 Feb 2012 10:31:21 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/codento" /><feedburner:info uri="codento" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Kolmikerrosarkkitehtuuri</title>
		<link>http://feedproxy.google.com/~r/codento/~3/J5pn2BsPWOE/</link>
		<comments>http://blog.codento.com/2012/02/kolmikerrosarkkitehtuuri/#comments</comments>
		<pubDate>Fri, 03 Feb 2012 10:31:21 +0000</pubDate>
		<dc:creator>Santeri Paavolainen</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[arkkitehtuuri]]></category>
		<category><![CDATA[kolmikerrosarkkitehtuuri]]></category>
		<category><![CDATA[ohjelmistontuotanto]]></category>

		<guid isPermaLink="false">http://blog.codento.com/?p=1115</guid>
		<description><![CDATA[<p>Oletko ohjelmistoarkkitehti? Sittenhän tiedät jo kaiken kolmikerrosarkkitehtuurista. Haluatko softa-arkkitehdiksi? Sitten sinun pitää tietää kaikki kolmikerrosarkkitehtuurista. Oletko softaratkaisujen ostaja? Siinä tapauksessa sinun pitää tietää, miten sinua vedetään nenästä kolmikerrosarkkitehtuureilla.</p> <p>Kolmikerrosarkkitehtuuri on yksinkertaisesti todella hieno ja käyttökelpoinen. Miltä muulta arkkitehtuurimallilta onnistuu kaikki seuraava?</p> Se on yksinkertainen tavalla, joka saa kuulijat tuntemaan itsensä älykkäiksi, koska hehän &#8220;tajusivat&#8221; mistä [...]]]></description>
			<content:encoded><![CDATA[<p>Oletko ohjelmistoarkkitehti? Sittenhän tiedät jo kaiken kolmikerrosarkkitehtuurista. Haluatko softa-arkkitehdiksi? Sitten sinun pitää tietää kaikki kolmikerrosarkkitehtuurista. Oletko softaratkaisujen ostaja? Siinä tapauksessa sinun pitää tietää, miten sinua vedetään nenästä kolmikerrosarkkitehtuureilla.</p>
<p>Kolmikerrosarkkitehtuuri on yksinkertaisesti todella hieno ja käyttökelpoinen. Miltä muulta arkkitehtuurimallilta onnistuu kaikki seuraava?</p>
<ul>
<li>Se on yksinkertainen tavalla, joka saa kuulijat tuntemaan itsensä <strong>älykkäiksi</strong>, koska hehän &#8220;tajusivat&#8221; mistä tässä on kyse.</li>
<li>Se saa arkkitehdin vaikuttamaan <strong>ammattimaiselta</strong>, koska hän pystyy ehdottamaan ratkaisua, johon Isot Yritykset perustavat ratkaisunsa.</li>
<li>Se on sovellettavissa <strong>90%</strong> käyttötapauksista sopivalla &#8211; vaikka vähän vänkyrälläkin &#8211; argumentoinnilla.</li>
<li>Se on täyttä <strong>roskaa</strong>, sillä kolmikerrosarkkitehtuurin soveltaminen mihinkään ei itsessään ratkaise Todellisia Ongelmia.</li>
</ul>
<p>Kolmikerrosarkkitehtuurin hienous piilee siinä, että se antaa monimutkaiselle ongelmalle näennäisesti yksinkertaisen ratkaisun. Siinä ei ole mitään turhaa vaan kaikki on harkitusti juuri &#8220;oikein&#8221;. Esimerkiksi se, että kerroksia on juuri kolme: kolme on myös täydellinen määrä kerroksia &#8211; kaksi on ihan liian vähän &#8211; eihän mikään uskottava yritysjärjestelmä KAHDELLA pärjää ja neljä, no, on liikaa, silloinhan pitäisi pystyä perustelemaan miksei kolmella pärjää. Kolme on luku joka on helppo hyväksyä pysähtymättä miettimään perusteita sen valinnalle.</p>
<p>Lisäksi kolmikerrosarkkitehtuuri on helppo piirtää. Sen esittäminen tussitaululla ei edellytä mitään piirtotaitoja. Powerpointissakaan ei tarvitse kuin raahata kolme laatikkoa ja naputtaa sisään tekstit &#8220;esityskerros&#8221;, &#8220;logiikkakerros&#8221; ja &#8220;tietovarasto&#8221;. Done!</p>
<p><a href="http://blog.codento.com/files/2012/02/kolmikerrosarkkitehtuuri-laatikot.png"><img class="aligncenter  wp-image-1120" title="kolme laatikkoa, kaksi viivaa" src="http://blog.codento.com/files/2012/02/kolmikerrosarkkitehtuuri-laatikot-450x373.png" alt="" width="242" height="200" /></a></p>
<p>Pöh.</p>
<p>Angstini ei oikeastaan liity kolmikerrosarkkitehtuuriin itseensä. Se nimittäin on oikeasti käyttökelpoinen tapa lähestyä suurta osaa verkkopalveluista. Vaikka kolmikerrosarkkitehtuurissa kerrosten välit eivät ole oikeasti niin siistejä kuin niiden toivotaan olevan (rajanveto presiksen ja logiikan välillä on monesti veteen piirretty viiva), on kerroksellisuus perimmiltään erittäin käyttökelpoinen työkalu ison ongelman abstraktoinnissa helpommin käsiteltäviksi paloiksi.</p>
<p>Valitukseni kohdistuu kolmikerrosarkkitehtuurin käyttöön ainoana ratkaisuna. Liian monta kertaa olen nähnyt järjestelmien kuvauksia joissa lukee (ilmaistuna tosin laveammin) &#8220;kolmikerrosarkkitehtuurilla ratkaisemme skaalautuvuus- ja suorituskykyongelmat&#8221;. Tässä kohtaa joko itken verta tai lyön otsaani pöytään.</p>
<p>Muuten, jos olet ostamassa järjestelmää, ja joku lupaa että se on hyvä, koska se on kolmikerrosarkkitehtuuri, niin .. no, tuota. Soitatko meille kun tarvitset apua syntyneen sotkun selvittämisessä?</p>
<p>Ongelma on siinä, että kolmikerrosarkkitehtuurin toimiva kuvaaminen edellyttää muutakin kuin kolmen laatikon piirtämistä. Skaalautuvuus- ja suorituskykyvaatimusten (puhumattakaan saatavuus-) saavuttaminen edellyttää jokaisen laatikon sisällön avaamista sekä näiden välisten yhteyksien määrittelyä. Lisäksi kerrosarkkitehtuuriin kuuluu löyhä kytkentä kerrosten välillä, jota on mahdoton saavuttaa ellei siihen oikeasti pyri. Monesti toteutuksessa kolmikerrosarkkitehtuuri latistuu kolmeksi rajapinnaksi eri kerrosten välillä joita liimaa tehdastehdasmalli (factory factory pattern) jotka tuottavat vain yhdenlaisia tehtaita joista saa vain yhdenlaisia toteutuksia. Huoh.</p>
<p>Todelliset järjestelmät näyttävät enemmän spagetilta. Ei sen takia, että ne olisivat spagettia, vaan sen takia että oikeasti oikeiden ongelmien ratkaisu vaatii monimutkaisia ratkaisuja. Monimutkaiset ratkaisut voivat olla korkealla abstraktiotasolla yksinkertaisia, mutta todellisuudessa ihan jotain muuta. Kolme laatikkoa ei yksinkertaista ongelmaa, se auttaa jakamaan sen kolmeen osaan &#8211; mutta alkuperäistä ongelmaa ei vielä ole ratkaistu. <em>Divide et <strong>impera</strong></em>.</p>
<p>Jos joku piirtää sinulle kolme laatikkoa, selvitä miten laatikon sisällä olevat ongelmat ratkaistaan. Laatikot eivät itse ole ratkaisu.</p>
<img src="http://feeds.feedburner.com/~r/codento/~4/J5pn2BsPWOE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.codento.com/2012/02/kolmikerrosarkkitehtuuri/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.codento.com/2012/02/kolmikerrosarkkitehtuuri/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=kolmikerrosarkkitehtuuri</feedburner:origLink></item>
		<item>
		<title>Pilvistandardit ja mörkö huoneessa</title>
		<link>http://feedproxy.google.com/~r/codento/~3/wv4Y5LEM5Ew/</link>
		<comments>http://blog.codento.com/2012/01/pilvistandardit-ja-morko-huoneessa/#comments</comments>
		<pubDate>Mon, 30 Jan 2012 11:53:44 +0000</pubDate>
		<dc:creator>Santeri Paavolainen</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[aws]]></category>
		<category><![CDATA[dmtf]]></category>
		<category><![CDATA[oasis]]></category>
		<category><![CDATA[standardointi]]></category>
		<category><![CDATA[tosca]]></category>

		<guid isPermaLink="false">http://blog.codento.com/?p=1091</guid>
		<description><![CDATA[<p><a href="http://www.infoworld.com/t/cloud-computing/tech-giants-back-standard-cloud-portability-184160" target="_blank">InfoWorld</a> kirjoitti lyhyesti OASIS-ryhmän <a href="http://www.tosca-open.org/" target="_blank">TOSCA-määrittelystä</a>, kuvauskielestä pilvijärjestelmien provisiointia ja orkestrointia varten. Mitä se sitten onkaan. TOSCA ei tässä minua kiinnosta, vaan tämä toteamus artikkelissa:</p> <p>Absent from the list of contributors to TOSCA are Amazon and Microsoft. &#8220;They were invited,&#8221; said Ferris. &#8220;We welcome any other companies to come. We feel that [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.infoworld.com/t/cloud-computing/tech-giants-back-standard-cloud-portability-184160" target="_blank">InfoWorld</a> kirjoitti lyhyesti OASIS-ryhmän <a href="http://www.tosca-open.org/" target="_blank">TOSCA-määrittelystä</a>, kuvauskielestä pilvijärjestelmien provisiointia ja orkestrointia varten. Mitä se sitten onkaan. TOSCA ei tässä minua kiinnosta, vaan tämä toteamus artikkelissa:</p>
<blockquote><p>Absent from the list of contributors to TOSCA are Amazon and Microsoft. &#8220;They were invited,&#8221; said Ferris. &#8220;We welcome any other companies to come. We feel that we have a fairly good constituency involved.&#8221;</p></blockquote>
<p>Amazon Web Services (AWS) ei halunnut osallistua pilvistandardointiin. Tämä ei ole mikään uusi asia &#8211; AWS ei ole aiemmin korvaansa lotkauttanutkaan DMTF:n (Distributed Management Task Force) OVF-hankkeeseen tai SNAI:n (Storage Networking Industry Association) CDMI-pilvidatahankkeelle.</p>
<p>Miksi ei?</p>
<p>Siitä ei ole mitään hyötyä Amazonille. Pikemminkin päinvastoin. Oma arvioni on, että Amazon lähtee pilviteknologian ja sen rajapintojen standardointiin vain jos joku pystyy uhkaamaan sen kaupallista ja brändiylivoimaa pilvimarkkinoilla.</p>
<p>Amazon on dominantti toimija pilvimarkkinoilla. Dominantin pelurin valinnoista muodostuu usein de facto -standardeja kun muut alkavat toteuttaa dominantin teknologian kanssa yhteensopivia ratkaisuja. Näin on käynyt esimerkiksi IBM:lle useasti niin <a href="http://en.wikipedia.org/wiki/IBM_System/370#Clones" target="_blank">höyrykoneaikaan</a> kuin <a href="http://en.wikipedia.org/wiki/IBM_PC_compatible" target="_blank">PC-tietokoneiden</a> kanssa.</p>
<p>Jos yritys ei kuitenkaan halua hännystellä markkinajohtajaa, pitää sen tehdä jotain muuta. Usean pienemmän kilpailijan omiin ratkaisuihin nojaaminen kuitenkin ennemmin ohjaa ostajia markkinajohtajan syliin &#8211; jos kaupan hyllyllä 70% on VHS-nauhureita ja loput kolmea eri kilpailevaa epäyhteensopivaa ratkaisua, niin minkä ostaisit? Standardointi onkin tapa yhdistää fragmentoitunut markkina standardin taakse ja saada mahdollisuus haastaa markkinajohtajan teknologia.</p>
<p>Ja tästä syystä markkinajohtajan ei kannata lähteä standardointiin mukaan. Olisi hölmöä sitoa omat kädet eli sekä rajoittaa oman tuotekehityksen innovointia, että vähentää oman alustansa lock-in-efektiä.</p>
<p>Kun markkinajohtaja menettää kärkisijansa, kannattaa sen osallistua standardointiin. Joskus entinen markkinajohtaja ei tajua tilanteen muuttumista ja yrittää toimia edelleen kuten olisi herra talossa. Esimerkiksi tästä kelpaa IBM:n <a href="http://en.wikipedia.org/wiki/IBM_Personal_System/2" target="_blank">MCA-väyläratkaisu</a>, joka ei lopulta kiinnostanut oikeastaan ketään. Saattaa olla toki, että Amazon yllättää ja syleileekin avoimia standardeja ennen kuin on ihan pakko. Historian valossa en kuitenkaan pidättäisi hengitystäni.</p>
<img src="http://feeds.feedburner.com/~r/codento/~4/wv4Y5LEM5Ew" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.codento.com/2012/01/pilvistandardit-ja-morko-huoneessa/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.codento.com/2012/01/pilvistandardit-ja-morko-huoneessa/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=pilvistandardit-ja-morko-huoneessa</feedburner:origLink></item>
		<item>
		<title>IAM, RDS VPC ja Storage Gateway – AWS-uutisia</title>
		<link>http://feedproxy.google.com/~r/codento/~3/Z3ShFD2coOs/</link>
		<comments>http://blog.codento.com/2012/01/iam-rds-vpc-ja-storage-gateway-aws-uutisia/#comments</comments>
		<pubDate>Wed, 25 Jan 2012 09:44:48 +0000</pubDate>
		<dc:creator>Santeri Paavolainen</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[aws]]></category>
		<category><![CDATA[dynamodb]]></category>
		<category><![CDATA[rds]]></category>
		<category><![CDATA[s3]]></category>
		<category><![CDATA[simpledb]]></category>
		<category><![CDATA[vpc]]></category>

		<guid isPermaLink="false">http://blog.codento.com/?p=1096</guid>
		<description><![CDATA[<p>AWS <a href="http://aws.amazon.com/about-aws/whats-new/2012/01/18/aws-announces-dynamodb/" target="_blank">julkisti viime viikolla DynamoDB:n</a>, jota puffattiin etukäteen vähän salaperäisellä kutsulla:</p> <p>We&#8217;ve got some cool and interesting news to share. Please join us at our live online event on Jan. 18th at 9am PST to learn more about the next big thing in the AWS cloud.</p> <p>Ei etteikö DynamoDB olisi kiinnostava, mutta hei [...]]]></description>
			<content:encoded><![CDATA[<p>AWS <a href="http://aws.amazon.com/about-aws/whats-new/2012/01/18/aws-announces-dynamodb/" target="_blank">julkisti viime viikolla DynamoDB:n</a>, jota puffattiin etukäteen vähän salaperäisellä kutsulla:</p>
<blockquote><p>We&#8217;ve got some cool and interesting news to share. Please join us at our live online event on Jan. 18th at 9am PST to learn more about the next big thing in the AWS cloud.</p></blockquote>
<p>Ei etteikö DynamoDB olisi kiinnostava, mutta hei haloo &#8211; ei se nyt minusta oikeasti ole niin <a href="http://www.datastax.com/dev/blog/amazon-dynamodb" target="_blank">radikaali</a>. Tuliko Amazonille kiire, kun suuri osa asiakkaista ohitti SimpleDB:n ja käytti ennemmin <a href="http://cassandra.apache.org/" target="_blank">Cassandraa</a> skaalaamiseen?</p>
<p>Vähemmälle huomiolle on sensijaan jäänyt pari DynamoDB:n jälkeen tehtyä julkistusta jotka ovat kuitenkin mielestäni erityisesti suuryritysten pilvipalveluiden käytön kannalta merkittäviä:</p>
<ul>
<li><a href="http://aws.amazon.com/about-aws/whats-new/2012/01/19/Announcing-IAM-Identity-Federation-To-AWS-Management-Console/" target="_blank">http://aws.amazon.com/about-aws/whats-new/2012/01/19/Announcing-IAM-Identity-Federation-To-AWS-Management-Console/</a> &#8211; Pääsy AWS-konsolille voidaan tehdä federoidusti, eli esim. yrityksen olemassaolevan AD-käyttäjäkannan kautta (ei tosin ihan helposti, integrointi on vielä lapsenkengissään &#8211; mutta eiköhän se parane nopeasti).</li>
<li><a href="http://aws.amazon.com/about-aws/whats-new/2012/01/24/amazon-rds-announces-support-for-vpc/" target="_blank">http://aws.amazon.com/about-aws/whats-new/2012/01/24/amazon-rds-announces-support-for-vpc/</a> &#8211; RDS-instansseja pystyy nyt luomaan <a href="http://aws.amazon.com/vpc/" target="_blank">VPC:n</a> eli ”oman yksityisen julkisen pilven” sisälle. Tämä puute on saanut monilta WTF-kommentteja kun aiemmin olen kertonut siitä. Ei enää.</li>
<li><a href="http://aws.amazon.com/about-aws/whats-new/2012/01/24/announcing-aws-storage-gateway/" target="_blank">http://aws.amazon.com/about-aws/whats-new/2012/01/24/announcing-aws-storage-gateway/</a> &#8211; Amazonilta uusi veto &#8211; kaupallinen ($125/kk) softa, joka viedään asiakkaan levyjärjestelmiin kiinni. Ja se liittää olemassaolevan levyinfran S3:een.</li>
</ul>
<p>Viimeisestä en usko näkeväni vielä koko kuvaa. Vatsassa on jotenkin sellainen kutina, että kyseessä on uudenlaisen suuryritysten datakeskusten valtaamisstrategian ensimmäinen askel. Sille lienee jatkoa luvassa.</p>
<img src="http://feeds.feedburner.com/~r/codento/~4/Z3ShFD2coOs" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.codento.com/2012/01/iam-rds-vpc-ja-storage-gateway-aws-uutisia/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.codento.com/2012/01/iam-rds-vpc-ja-storage-gateway-aws-uutisia/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=iam-rds-vpc-ja-storage-gateway-aws-uutisia</feedburner:origLink></item>
		<item>
		<title>Eroja regexp-kirjastoissa</title>
		<link>http://feedproxy.google.com/~r/codento/~3/kBwvntrl3LI/</link>
		<comments>http://blog.codento.com/2012/01/eroja-regexp-kirjastoissa/#comments</comments>
		<pubDate>Tue, 24 Jan 2012 12:56:12 +0000</pubDate>
		<dc:creator>Teemu Kalvas</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[c]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[ohjelmointi]]></category>
		<category><![CDATA[regexp]]></category>

		<guid isPermaLink="false">http://blog.codento.com/?p=1083</guid>
		<description><![CDATA[<p>Regexp-kirjastot ovat funktionaalisesti kaikki samanlaisia. Vai ovatko?</p> <p>Eivät sittenkään. Osassa on mietitty vähän hämärämpiä käyttötapauksia, ja mahdollistettu muun muassa osittaisen matchin erottaminen epäonnistuneesta matchista. Kaikkein yleisikäyttöisin rajapinta olisi sellainen, joka mahdollistaisi täyden streamauksen, mutta se on harvinainen.</p> <p>Otetaan esimerkki käyttötapauksesta: webissä on sivu, ja sivulla lomake, jossa on kenttiä, joilla on jotain muotovaatimuksia. Kehittäjä määrittelee [...]]]></description>
			<content:encoded><![CDATA[<p>Regexp-kirjastot ovat funktionaalisesti kaikki samanlaisia. Vai ovatko?</p>
<p>Eivät sittenkään. Osassa on mietitty vähän hämärämpiä käyttötapauksia, ja mahdollistettu muun muassa osittaisen matchin erottaminen epäonnistuneesta matchista. Kaikkein yleisikäyttöisin rajapinta olisi sellainen, joka mahdollistaisi täyden streamauksen, mutta se on harvinainen.</p>
<p>Otetaan esimerkki käyttötapauksesta: webissä on sivu, ja sivulla lomake, jossa on kenttiä, joilla on jotain muotovaatimuksia. Kehittäjä määrittelee muotovaatimuksen regexpillä. Halutaan dynaamisesti päivittyvä feedback, joka osaa kertoa, ei pelkästään onko kenttään kirjoitettu data kelvollista tai kelvotonta, vaan myös että voisiko se olla kelvollista, jos siihen lisättäisiin vielä jotain. Näin esim. luottokorttinumero olisi kesken kirjoittamisensa tilassa &#8220;ei vielä ok, mutta jos kirjoitat lisää, voisi olla ok&#8221;.</p>
<p>Tämän toteuttaminen pelkällä regexpin match-metodilla on hieman hankalaa. Aidoille regexpeille voidaan toteuttaa automaattinen transformaatio, joka muuttaa yhden regexpin toiseksi, joka matchaa kaikkiin ensimmäisen valideihin prefikseihin. Jos regexpejä laajennetaan epäaidoiksi sallimalla back referencet, tämä strategia ei enää edes toimi.</p>
<p><a title="PCRE" href="http://www.pcre.org/" target="_blank">PCRE</a>:ssä (C-kirjasto) erottelu saadaan aikaan antamassa pcre_exec:ille flageissa PRCE_PARTIAL_HARD, ja tunnistamalla paluuarvona PCRE_ERROR_PARTIAL (vastakohtana PCRE_ERROR_NOMATCH:ille). (Englanninkielinen termi on partial match.)</p>
<p>Muita tutkiessa vastaan tulleita kirjastoja, joissa tämä onnistuu, on <a title="Boost" href="http://www.boost.org/" target="_blank">Boost</a> (C++) ja <a title="JRegex" href="http://jregex.sourceforge.net/" target="_blank">JRegex</a> (Java). Boostia voi pitää jossain määrin standardina C++-ympyröissä. Javassa useimmat ammatinharjoittajat käyttävät standardikirjaston regexpejä, eikä tule mieleenkään, että parempikin ratkaisu (ja kyllä, JRegex on monilla tavoin parempi) on olemassa.</p>
<p>Pythonin standardikirjasto ei tätä tue, eikä laajennustakaan löydetty. Samoin kävi Javascriptin tapauksessa.</p>
<p>Oikeastaan ainoa asia, joka jäi enemmän häiritsemään, oli Javascript. Alkuperäinen käyttötapaushan haluttaisiin tietysti toteuttaa Javascriptillä, koska kyseessä on selaimessa tehtävä tarkistus.</p>
<p>Jos tarinassa on mitään varsinaista opetusta, se on se, että sen jälkeen, kun joku ominaisuus on saavuttanut kielen standardikirjaston, viat, jotka siihen ovat jääneet, ovat ikuisia. Vaikka ne korjattaisiinkin laajennukseen, suurin osa kehittäjistä käyttää standardikirjastoa. Tämä ei tietenkään koske suoranaisia bugeja toteutuksessa, koska ne on helppo korjata, vaan tällaisia korkeamman tason ajatusvirheitä siitä, mikä on mahdollisten käyttötapausten kenttä.</p>
<p>Niin, se täysi streamaus: kuvitellaan tilanne, jossa matchattava sisältö on pitkää, syöte tulee streamista ja tulos menee streamiin. Tällöin olisi hyötyä regexp-matcherista, jolle syöte voidaan antaa mielivaltainen pala kerrallaan, ja joka aina palan jälkeen osaa sanoa, missä tilassa on. Nämä tilat ovat no match, match ja ei voida tietää vielä, eli osittainen match.</p>
<p>Yleiskäyttöisiä palikoita suunnitellessa on aina ristivetoa streamattavien rajapintojen laajemman käytettävyyden ja kerralla asiat tekevien rajapintojen implementoinnin helppouden välillä. Aina oikeaa valintaa ei ole.</p>
<img src="http://feeds.feedburner.com/~r/codento/~4/kBwvntrl3LI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.codento.com/2012/01/eroja-regexp-kirjastoissa/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.codento.com/2012/01/eroja-regexp-kirjastoissa/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=eroja-regexp-kirjastoissa</feedburner:origLink></item>
		<item>
		<title>Suosi EBS-instansseja</title>
		<link>http://feedproxy.google.com/~r/codento/~3/VqYK9h_ycVM/</link>
		<comments>http://blog.codento.com/2012/01/suosi-ebs-instansseja/#comments</comments>
		<pubDate>Mon, 16 Jan 2012 12:38:15 +0000</pubDate>
		<dc:creator>Santeri Paavolainen</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[aws]]></category>
		<category><![CDATA[ebs]]></category>
		<category><![CDATA[ec2]]></category>
		<category><![CDATA[pilvi]]></category>

		<guid isPermaLink="false">http://blog.codento.com/?p=1053</guid>
		<description><![CDATA[<p>Eric Hammond perusteli <a href="http://alestic.com/2012/01/ec2-ebs-boot-recommended" target="_blank">loistavan hyvin ja kattavasti </a>syyt sille, miksi AWS:ssä tulisi oletusarvoisesti käyttää EBS-instansseja ja -levyjä ns. ephemeral-instanssien sijaan.</p> <p>Itse olen käyttänyt pääosin EBS-instansseja jo pidemmän aikaa. Syyt löytyvät Ericin listasta numeroilla 1, 2 ja 6. Omassa käytössäni tärkeää on se, että EBS-instanssin levykuva säilyy raudan vikatilanteissa, instanssia voi sammuttaa ja käynnistää [...]]]></description>
			<content:encoded><![CDATA[<p>Eric Hammond perusteli <a href="http://alestic.com/2012/01/ec2-ebs-boot-recommended" target="_blank">loistavan hyvin ja kattavasti </a>syyt sille, miksi AWS:ssä tulisi oletusarvoisesti käyttää EBS-instansseja ja -levyjä ns. ephemeral-instanssien sijaan.</p>
<p>Itse olen käyttänyt pääosin EBS-instansseja jo pidemmän aikaa. Syyt löytyvät Ericin listasta numeroilla 1, 2 ja 6. Omassa käytössäni tärkeää on se, että EBS-instanssin levykuva säilyy raudan vikatilanteissa, instanssia voi sammuttaa ja käynnistää mielin määrin, sekä mahdollisuus vaihtaa instanssia pienemmäksi tai isommaksi säilyttäen itse instanssin datan (ja käyttöjärjestelmän).</p>
<p>Eric ei kuitenkaan maininnut EBS-levyjen snapshoteista. Niin isojen kuin pienien päivitysten kanssa snapshotit  ovat kullanarvoisia &#8211; ennen päivitystä otat snapshotin ja jos jokin meni katastrofaalisesti päin metsää, palautat aiemman snapshotin. Tai vielä parempaa, otat uudet snapshotit vikatilanteesta ennen palautusta ja rupeat tutkimaan snapshotteja ilman mitään kiirettä. Snapshoteista voi tehdä uudet EBS-levykuvat, jotka voi vaikka liittää toiseen koneeseen ja penkoa sitä kautta vikaantuneen koneen levyjärjestelmää.</p>
<p style="padding-left: 30px;"><em>Oleellinen ero ephemeral-levyjä ja EBS-levyjä käyttävissä instansseissa on virtuaalikoneiden levyn elinkaari. EBS-instanssilla se on analoginen perinteiseen palvelinprovisiointiin: hankit koneen jossa on levyä, ja levy säilyttää datansa niin kauan kuin konetta ei heitetä roskiin. Datan säilymiseen ei vaikuta se onko koneessa tai edes koko talossa sähköä vai ei. AWS:ssä &#8220;sammutettu&#8221; EBS-instanssi ei kuluta prosessoria josta ei myöskään kuluja. Sammutettu EBS-instanssi ei ole täysin ilmainen, sillä sen levyvarauksesta pitää edelleen maksaa. Levykuvan koosta sitten riippuu onko tämä paljon vai vähän &#8211; 8 gigan levykuvan säilyttäminen &#8220;kylmänä&#8221; maksaa kuitenkin alle $1 per kuukausi.<br />
</em></p>
<p style="padding-left: 30px;"><em>EBS-instanssin levykuva hävitetään vasta kun kone heitetään &#8220;roskiin&#8221;, eli se deprovisioidaan &#8211; AWS:n termi tähän on &#8220;instance termination&#8221;. AWS:ssä on EBS-koneille mahdollista asettaa päälle &#8220;termination protection&#8221; ominaisuus, jolloin instanssin terminointi vahingossa muuttuu käytännössä mahdottomaksi.<br />
</em></p>
<p style="padding-left: 30px;"><em>Ephemeral-levyä käyttävät instanssin levykuvan elinkaari on toisenlainen. Se on sataprosenttisesti sidottu instanssin <strong>ajossa olemiseen</strong>. Analogiana voisi toimia ehkä mennävuosien RAM-levyt. Ephemeral-instanssien levyissä säilyy tieto vain niin kauan kuin sähköt ovat päällä. Sähköt pois? Zzzzup! Sinne meni data.</em></p>
<p>Ephemeral-instansseille on käyttötapauksensa. Jos kuitenkin aloittelet AWS:n käyttöä, et todennäköisesti törmää näihin käyttötapauksiin kovinkaan pian. Ilman parempaa syytä kannattaa valita EBS-instanssi. EBS-instanssin käyttömalli on lähempänä perinteistä palvelinprovisiointia joten siitä tulee vähemmän yllätyksiää.</p>
<p>(Antille: Yksi käyttötapaus on tosiaan juuri se Hadoop-klusteri, jossa EBS-instansseista ei ole oikeastaan mitään hyötyä. Ellei sitten halua ajaa t1.micro-klusteria.)</p>
<img src="http://feeds.feedburner.com/~r/codento/~4/VqYK9h_ycVM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.codento.com/2012/01/suosi-ebs-instansseja/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.codento.com/2012/01/suosi-ebs-instansseja/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=suosi-ebs-instansseja</feedburner:origLink></item>
		<item>
		<title>Jos sinulla on vain vasara…</title>
		<link>http://feedproxy.google.com/~r/codento/~3/DXvUsc68eUw/</link>
		<comments>http://blog.codento.com/2012/01/jos-sinulla-on-vain-vasara/#comments</comments>
		<pubDate>Fri, 13 Jan 2012 13:23:10 +0000</pubDate>
		<dc:creator>Antti Rasinen</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[näin meillä]]></category>

		<guid isPermaLink="false">http://blog.codento.com/?p=997</guid>
		<description><![CDATA[<p style="text-align: left;">Ripustin vanhan vasarani toimiston seinälle. Muistutukseksi.<a href="http://blog.codento.com/2012/01/jos-sinulla-on-vain-vasara/vasara_600/" rel="attachment wp-att-998"></a></p> <p>Väärän työkalun käytöllä on seurauksensa, joskus työkalulle ja joskus sen käyttäjälle.</p>]]></description>
			<content:encoded><![CDATA[<p style="text-align: left;">Ripustin vanhan vasarani toimiston seinälle. Muistutukseksi.<a href="http://blog.codento.com/2012/01/jos-sinulla-on-vain-vasara/vasara_600/" rel="attachment wp-att-998"><img class=" wp-image-998 aligncenter" src="http://blog.codento.com/files/2012/01/vasara_600-250x337.jpg" alt="" width="250" height="337" /></a></p>
<p>Väärän työkalun käytöllä on seurauksensa, joskus työkalulle ja joskus sen käyttäjälle.</p>
<img src="http://feeds.feedburner.com/~r/codento/~4/DXvUsc68eUw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.codento.com/2012/01/jos-sinulla-on-vain-vasara/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://blog.codento.com/2012/01/jos-sinulla-on-vain-vasara/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=jos-sinulla-on-vain-vasara</feedburner:origLink></item>
		<item>
		<title>Oletko valmis softakonsultiksi?</title>
		<link>http://feedproxy.google.com/~r/codento/~3/OsOcVDFnb1U/</link>
		<comments>http://blog.codento.com/2012/01/oletko-valmis-softakonsultiksi/#comments</comments>
		<pubDate>Wed, 11 Jan 2012 13:43:00 +0000</pubDate>
		<dc:creator>Santeri Paavolainen</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[konsultointi]]></category>
		<category><![CDATA[näin meillä]]></category>
		<category><![CDATA[rekrytointi]]></category>

		<guid isPermaLink="false">http://blog.codento.com/?p=882</guid>
		<description><![CDATA[<p>Kuulin rekrykandidaatilta miten hän piti työhaastatteluamme hyödyllisenä kokemuksena. Alla lainaus sähköpostista:</p> <p style="padding-left: 30px;">&#8220;Ja tästä kuuluu teille ehdottomasti kiitos. Haastattelunne oli suorin (ja tiukin) missä muistan koskaan olleeni. Ennenkaikkea kiitän teitä konsulttitoimen rehellisestä läpikäynnistä. Tämän ansiosta pääsin siihen lopputulokseen, ettei minusta ole konsultin työhön.&#8221;</p> <p>Itsensä ymmärtäminen on erittäin tärkeää ja muiden auttamisesta tulee mukava lämmin [...]]]></description>
			<content:encoded><![CDATA[<p>Kuulin rekrykandidaatilta miten hän piti työhaastatteluamme hyödyllisenä kokemuksena. Alla lainaus sähköpostista:</p>
<p style="padding-left: 30px;">&#8220;Ja tästä kuuluu teille ehdottomasti kiitos. Haastattelunne oli suorin (ja tiukin) missä muistan koskaan olleeni. Ennenkaikkea kiitän teitä konsulttitoimen rehellisestä läpikäynnistä. Tämän ansiosta pääsin siihen lopputulokseen, ettei minusta ole konsultin työhön.&#8221;</p>
<p>Itsensä ymmärtäminen on erittäin tärkeää ja muiden auttamisesta tulee mukava lämmin tunne. Mmmm. Vaikka sitten jäimmekin vaille pätevää henkilöä tällä kertaa.</p>
<p>Mitä kuitenkin on se konsultin työ, joka ei kaikille loppujen lopuksi ole sopivaa? Konsultointia on monenlaista &#8211; karkeasti sen mitä &#8220;konsultoinniksi&#8221; kutsutaan voi jakaa <a href="http://blog.codento.com/2009/12/konsultin-rooli/" target="_blank">resurssivuokraukseen, asiantuntijatyöhön sekä ns. &#8220;oikeaan&#8221; liikkeenjohdon konsultointiin</a>. Kaikkia näitä kuitenkin yhdistää muutama teema jotka ovat kaikenlaiselle ohjelmistoalan ulkoistetulle työlle yhteisiä:</p>
<ol>
<li>Työn jatkuvuudesta ei ole takeita</li>
<li>Alihankkijoita ei julkisesti kiitellä</li>
<li>Konsultin kympin suoritus on oikeasti vain ysi</li>
<li>Työmatkat muuttuvat jatkuvasti</li>
</ol>
<p>Nämä johtuvat konsultointityön luonteesta.</p>
<p><strong><span style="font-size: x-large;">1  </span></strong>Yksi yleinen syy ulkoistuksen käyttöön on yritysten helpompi mukautuminen työvoimatarpeen vaihteluihin. Siis helpompi tilaajan, ei toimittajan näkökulmasta katsottuna. Ergo, konsulttien miehittämät projekti on helpompi lopettaa. Resurssivajetta paikannut konsultti lähtee kun vaje paikataan.</p>
<p>Yli puolen vuoden konsulttikeikat ovat pitkiä. Useiden vuosien keikkoja on kyllä olemassa, mutta niistä ei koskaan etukäteen tiedä. Konsultin on hankala ennakoida sitä mille asiakkaalle hän seuraavassa kuussa tekee töitä.</p>
<p><span style="font-size: x-large;"><strong>2  </strong></span>Ulkoistuskumppaneille ei satele julkisia kiitoksia. Monessako lehtihaastattelussa olet nähnyt jonkin firman kiittelevän alihankkijoidensa panosta omasta menestyksestään? Et yhdessäkään. (No, en ole tehnyt tästä tarkkaa tutkimusta. Ehkä yhdessä siis.) Tuskin kukaan hakeutuu softa-alalle julkisuudenkipeyttään, mutta jos kuitenkin silmissäsi vilkkuvat jutut kasvuyritysten menestyksestä, niin mene toki sellaiseen, mutta älä konsulttina.</p>
<p>En tarkoita etteikö asiakkailta tulisi positiivista palautetta. Hyvä työ kyllä tunnustetaan. Ulkoistetun henkilöstön rooliin kuuluu kuitenkin pysyä taka-alalla ja antaa yrityksen oman henkilökunnan paistatella menestyksen tuomassa huomiossa.</p>
<p><strong><span style="font-size: x-large;">3  </span></strong>Hyvän konsultin tuntihinta on merkittävästi suurempi kuin vakityöntekijän tuntipalkka. Vaikka konsultti ei välttämättä itse saa koko laskutuksestaan itse palkkana kuin (murto-)osan, vakityöntekijän näkökulmasta konsultti on (karrikoiden) a) ulkopuolinen tunkeilija joka saa b) samasta työstä törkeästi parempaa liksaa. Käytännön seuraus tästä on se, että konsultin ja vakihenkilöstön työsuorituksia mitataan erilaisella mitta-asteikolla. Korkea hinta tarkoittaa parempaa tulosta, eikö niin?</p>
<p>Tämä kuulostaa aika raa&#8217;alta. En tarkoita, että konsultit olisivat kakkosluokan kansalaisia. Mutta konsultin on oltava aina &#8220;vähän parempi&#8221; ollakseen yhtä hyvä kuin muut. Jos tavoittelet kympin suoritusta, sinun pitää vääntää nuppi yhteentoista. Jos haluat ysin, pitää tehdä kymppi. Ja jos teet keskinkertaisen eli seiskan, se on oikeasti huono eli kutonen.</p>
<p><img class=" wp-image-900 alignright" title="Reissaamista" src="http://blog.codento.com/files/2011/12/iStock_000016626944XSmall.jpg" alt="" width="279" height="185" /></p>
<p><strong><span style="font-size: x-large;">4  </span></strong>Asiakkaiden ja projektien vaihtuessa myös konsultin pitää ottaa jalat alleen ja liikkua. Mitä korkeampaa &#8220;jalostusastetta&#8221; konsultti on, sitä enemmän matkallisesti kauas vieviä reissuja on luvassa. Lopullisen työpisteen sijaintiin ja sen vaihtuvuuteen vaikuttaa niin konsulttifirman asiakaskunta kuin konsultin tarkka työnkuva, mutta yhtä lailla, työmatkat vaihtuvat usein.</p>
<p>Tämä pätee myös rajoitetulla maantieteellisellä alueella toimiville &#8211; PK-seudulla yksi asiakas voi olla Otaniemessä, seuraava Vantaalla ja kolmas Helsingin ydinkeskustassa. Lyhyt työmatka on toki aina kiva yllätys, mutta yleensä vain hetkellinen etu.</p>
<p>&#8230;</p>
<p>Ei tämä pahaa ole. Se vain poikkeaa siitä, mitä pidetään &#8220;normaalina&#8221; työnä.</p>
<p>Ohjelmistoalan konsultointi tarjoaa loistavan tilaisuuden nähdä tiivistetysti paljon erilaisia työympäristöjä, ihmisiä, tapoja toimia, erilaisia asiakkaita ja projekteja. Omaa osaamistaan toistuvasti pinnistämällä kehittyy nopeasti. Jokainen asiakas toimii enemmän tai vähemmän omalla tavallaan ja ulkopuolisella konsultilla on mahdollisuus ottaa omaan työkalupakkiinsa eri työpaikkojen parhaat käytännöt.</p>
<p>Uskotko, että sinusta olisi konsultiksi? Lähetä CV ja vapaamuotoinen työhakemus osoitteeseen rekry[at]codento.com.</p>
<img src="http://feeds.feedburner.com/~r/codento/~4/OsOcVDFnb1U" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.codento.com/2012/01/oletko-valmis-softakonsultiksi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.codento.com/2012/01/oletko-valmis-softakonsultiksi/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=oletko-valmis-softakonsultiksi</feedburner:origLink></item>
		<item>
		<title>Haastava kielenkäyttö</title>
		<link>http://feedproxy.google.com/~r/codento/~3/t-JjIzKVlZo/</link>
		<comments>http://blog.codento.com/2012/01/haastava-kielenkaytto/#comments</comments>
		<pubDate>Tue, 03 Jan 2012 14:34:35 +0000</pubDate>
		<dc:creator>Antti Rasinen</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[konsultointi]]></category>

		<guid isPermaLink="false">http://blog.codento.com/?p=995</guid>
		<description><![CDATA[<p>Uuden vuoden aattona Arto Nyberg haukkui <a href="http://areena.yle.fi/audio/1325235833919" target="_blank">radiossa</a> (kohdasta 11:11 eteenpäin) sanaa &#8220;haaste&#8221; sisäsiistiksi konsulttislangiksi, &#8220;joka ei kerro elämästä sen oikeita asioita.&#8221;</p> <p>En aio rynnätä eturintamaan puolustamaan sanan &#8220;haaste&#8221; kunniaa. En, vaan ammun sitä selkään näppäimistöni takaa. Inhoan koko sanaa–tai oikeastaan sen väärinkäyttöä.</p> <p>Elävät kielet ovat täynnä värikkäitä ilmaisuja, jotka ovat syntyneet ihmisten taisteluista maailmankaikkeutta [...]]]></description>
			<content:encoded><![CDATA[<p>Uuden vuoden aattona Arto Nyberg haukkui <a href="http://areena.yle.fi/audio/1325235833919" target="_blank">radiossa</a> (kohdasta 11:11 eteenpäin) sanaa &#8220;haaste&#8221; sisäsiistiksi konsulttislangiksi, &#8220;joka ei kerro elämästä sen oikeita asioita.&#8221;</p>
<p>En aio rynnätä eturintamaan puolustamaan sanan &#8220;haaste&#8221; kunniaa. En, vaan ammun sitä selkään näppäimistöni takaa. Inhoan koko sanaa–tai oikeastaan sen väärinkäyttöä.</p>
<p>Elävät kielet ovat täynnä värikkäitä ilmaisuja, jotka ovat syntyneet ihmisten taisteluista maailmankaikkeutta vastaan. Palaverin sopiminen tusinan kiireisen päättäjän kanssa vaatii työtä ja aikaa; se on siis työlästä. Lähikaupan kylmäketju katkeaa usein; kyseessä on ongelma. Ulkomainen ulkoistuskumppani vastaa vain joka kolmanteen sähköpostiin ja siihenkin asian vierestä; kommunikaatio on hankalaa.</p>
<p>Haasteella on sanana paikkansa. Sen käyttäminen vihjaa, että yksilö tai yhteisö on päättänyt ryhtyä tarmokkaasti toimeen muuttamaan vallitsevia olosuhteita. Haaste on otettu vastaan. Usein lopputuloksena on jotain positiivista–henkilökohtaista kasvua, suurempi markkinaosuus ja niin edelleen.</p>
<p>Miten ylläolevat virkkeet sopivat tähän?</p>
<p><em>Palaverin ajan löytäminen on haastavaa</em>. Kenelle? Kenen osaaminen kasvaa siitä, jos tämä haaste otetaan vastaan ja voitetaan?</p>
<p><em>Kylmäketjun ylläpidossa on ollut runsaasti haasteita</em>. Miten vakavia? Onko kylmäketju katkennut vai onko sen ylläpito kallista? Sana haaste peittää tässä tärkeää informaatiota.</p>
<p>Lopuksi rajatapaus: <em>Kommunikaatio on haastavaa</em>. Tässä tapauksessa alkuperäisen lauseen sanan &#8220;hankala&#8221; käyttö piilottaa yksityiskohtia. Se kuitenkin paljastaa enemmän puhujan asenteesta kuin kevyesti heitetty &#8220;haastava.&#8221; Rivien väleistä voi lukea, että kommunikaation vaikeus on hyväksytty vallitsevaksi asiantilaksi. Jos puhuja on kuitenkin motivoitunut parantamaan yhteistyötä kumppanin kanssa, &#8220;haaste&#8221; saattaakin sopia tilanteeseen paremmin.</p>
<p>Taitava konsultti oppii asiakkaan käyttämän kielen ja kertoo oman viestinsä asiakkaan käyttämillä termeillä. Jos asiakkaalla on ongelma, konsulttikin kutsuu sitä ongelmaksi.</p>
<p>Ymmärrän hyvin &#8220;haasteen&#8221; houkutuksen. Miten kutkuttavaa onkaan ohjelmoida asiakas näkemään tilanteensa positiivisemmassa valossa! Tällaisessa interventiossa on samat vaarat kuin antibiooteissa; liiallinen käyttö johtaa resistenssiin. Hyvä sana muuttuu &#8220;konsulttipotaskaksi.&#8221; (Ja ah, toimiiko asioiden suora kertominen koskaan? Parempi, että asiakas itse oivaltaa ongelmansa olevan haaste, sen sijaan että se suoraan hänelle kerrottaisiin…)</p>
<p>Uuden vuoden toiveena pyydän kahta asiaa. Pyydän, että &#8220;haasteet&#8221; jätetään vuoteen 2011 ja tästä vuodesta tehdään ongelmien, hankaluuksien, kommervenkkien ja takaiskujen vuosi!</p>
<img src="http://feeds.feedburner.com/~r/codento/~4/t-JjIzKVlZo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.codento.com/2012/01/haastava-kielenkaytto/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.codento.com/2012/01/haastava-kielenkaytto/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=haastava-kielenkaytto</feedburner:origLink></item>
		<item>
		<title>Ääretön skaalautuvuus</title>
		<link>http://feedproxy.google.com/~r/codento/~3/ZM90NZjr8bA/</link>
		<comments>http://blog.codento.com/2011/12/aareton-skaalautuvuus/#comments</comments>
		<pubDate>Fri, 30 Dec 2011 09:09:08 +0000</pubDate>
		<dc:creator>Santeri Paavolainen</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[aws]]></category>
		<category><![CDATA[ec2]]></category>
		<category><![CDATA[pilvi]]></category>
		<category><![CDATA[skaalautuvuus]]></category>
		<category><![CDATA[spingy]]></category>
		<category><![CDATA[sqs]]></category>

		<guid isPermaLink="false">http://blog.codento.com/?p=958</guid>
		<description><![CDATA[<p>Miten rakennat järjestelmän, joka skaalautuu 100 miljoonalle käyttäjälle? Vastaus: Et rakenna.</p> <p>Onko tämä kompa vai yritänkö vetää lukijaa nenästä? Kyllä ja ei. Siksi vähän pidempi vastaus: Älä rakenna itse sellaista skaalautuvuutta, jonka joku muu on jo ratkaissut (ja jota voit hyödyntää).</p> <p>IaaS- ja PaaS -markkinoilla on paljon skaalautuvia infra- ja middlewareratkaisuja joissa toimittaja ottaa vastuun [...]]]></description>
			<content:encoded><![CDATA[<p>Miten rakennat järjestelmän, joka skaalautuu 100 miljoonalle käyttäjälle? Vastaus: Et rakenna.</p>
<p>Onko tämä kompa vai yritänkö vetää lukijaa nenästä? Kyllä ja ei. <strong>Siksi vähän pidempi vastaus</strong>: Älä rakenna itse sellaista skaalautuvuutta, jonka joku <strong>muu</strong> on jo ratkaissut (ja jota voit hyödyntää).</p>
<p>IaaS- ja PaaS -markkinoilla on paljon skaalautuvia infra- ja middlewareratkaisuja joissa toimittaja ottaa vastuun palvelun skaalautumisesta, ja tilaajan vastuulle jää laskun maksaminen. Yksinkertaisen esimerkin saa tehtyä Amazon Web Service:n S3-tiedostopalvelulla sekä SQS-viestijonopalvelulla. Alla on esimerkkikuva arkkitehtuurista jossa selain lukee tiedot S3:sta ja viestii taustajärjestelmälle vain SQS:n kautta:</p>
<p><a href="http://blog.codento.com/files/2011/12/triviaalisti-skaalautuva-palvelu-aws.jpg"><img class="aligncenter  wp-image-959" title="Triviaalisti skaalautuva palvelu AWS:ssä" src="http://blog.codento.com/files/2011/12/triviaalisti-skaalautuva-palvelu-aws-450x230.jpg" alt="" width="450" height="230" /></a>Järjestelmä toimii siten, että kohdassa A taustajärjestelmä työntää S3:een tiedot, jotka asiakasohjelma (selain) hakee kohdassa B. Selaimessa pyörivä ohjelma interaktoi käyttäjän kanssa ja lähettää tarvittaessa asynkroniset palvelupyynnöt taustajärjestelmälle SQS:n kautta kohdassa C. Taustajärjestelmä purkaa sitten SQS-jonoa omaa tahtiaan kohdassa D.</p>
<p>Jotta tämä keskustelu ei jäisi teoreettiselle tasolle, esittelen nyt <span style="font-size: xx-small;">(rummunpäristystä)</span> palvelun nimeltä <a href="http://spingy.labs.codento.com/" target="_blank"><strong>spingy</strong></a>. Kyseessä on yksinkertainen järjestelmä, joka <a href="http://fi.wikipedia.org/wiki/Ping" target="_blank">pingailee</a> käyttäjien määrittelemiä internet-palvelimia ja piirtää sitten käyttäjälle nätin kuvaajan palvelimen verkkotason latenssista. Tähän malliin:</p>
<p><a href="http://blog.codento.com/files/2011/12/spingy-screenshot1.png"><img class="aligncenter size-thumbnail-horiz wp-image-984" title="Spingy käytössä" src="http://blog.codento.com/files/2011/12/spingy-screenshot1-450x299.png" alt="" width="450" height="299" /></a></p>
<p>Spingy toimii siten, että taustapalvelin pingailee palvelimia omaan tahtiinsa ja ajoittain työntää tulostietoja S3:een. Asiakasohjelma on selaimessa toimiva javascript-pohjainen ohjelma, joka hakee raakadatan S3:lta ja piirtää näistä kauniit kuvat. Presentaatiokerros ja sen aiheuttama kuorma on siis sataprosenttisesti selaimessa. Tiedonsiirron skaalautumisen hoitaa S3. Taustajärjestelmä itsessään ei näe käyttäjien aiheuttamaan kuormaa kuin pingattavien koneiden lukumäärän kasvuna &#8211; joka oletettavasti kasvaa hitaammin kuin käyttäjien määrä, koska julkisessa internetissä on kiinni vähemmän tietokoneita kuin planeetalla on ihmisiä.</p>
<p>Taustapalvelimena on yksi mikroinstanssi. Siis 1 &#8211; uno, ett, one. Enempää se ei edes tarvitse. Alunperin asetin spingylle tavoitteeksi 50 000 koneen pingauksesta kaksi kertaa tunnissa ja ainakin penkkitesteissä tämä saavutetaan helposti:</p>
<ul>
<li>Yli 400 000 pingiä tunnissa <strong>yksisäikeisenä</strong> (CPU ei noussut yli 10%, joten tuota voisi rinnakkaistaa moninkertaisesti)</li>
<li>Yli 120 000 käsiteltyä ja vastaanotettua SQS-viestiä tunnissa (myös yksisäikeisenä)</li>
</ul>
<p>SQS:ään pystyn työntämään uusia viestejä yhdeltä koneelta myös riittävän nopeasti (&gt;200 000/h), mutta koska spingyn selainpää normaalisti lähettää vain muutamia viestejä päivässä, ei asiakaspään viestien lähetyksen kaistanleveydellä ole niin suurta merkitystä. En ole erikseen testannut SQS:n suorituskyvyn rinnakkaistumista, joten se on tässä kohtaa pelkkä oletus. (200 tuhatta viestiä tunnissa ei viestijärjestelmille ole itsessään kummoinen tulos, mutta tähän käyttöön enemmän kuin riittävä.)</p>
<p>Vaikka S3 on &#8220;tunnetusti&#8221; skaalautuva, päätin silti testata sitä. Ajoin <a href="http://www.cloudassault.com/" target="_blank">Cloud Assaultilla</a> testin 250 rinnakkaisella clientillä. Testi tosin latasi vain Spingyn etusivua, mutta sekin on S3:ssa. Tuloksena oli tasaisesti yli 1300 latausta sekunnissa.</p>
<p><a href="http://blog.codento.com/files/2011/12/cloudassault-spingy1.png"><img class="aligncenter size-thumbnail-horiz wp-image-988" title="cloudassault-spingy" src="http://blog.codento.com/files/2011/12/cloudassault-spingy1-300x450.png" alt="" width="300" height="450" /></a></p>
<p>Miten hyvin tämä toimii oikeasti? Ehkä se ei ole niin relevanttia. Kyseessä on kuitenkin tekninen demo, ei kaupallinen ratkaisu. Demona se esittelee yhden mallin tehdä skaalautuvia verkkopalveluita. Toiminnallisuudeltaan se on hyvin rajoitettu eikä sellaisenaan ole sovellettavissa muissa palveluissa &#8211; mutta ehkä mallina siitä, mikä on yksi tapa saavuttaa skaalautuvuutta.</p>
<p>Hmmm, luulen että kirjoitan Spingystä ja skaalautuvuusmalleista vielä jossain vaiheessa lisää. <img src='http://blog.codento.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>P.S. Spingyn lähdekoodi on GPLv2:n alla ja löytyy <a href="https://github.com/codento/spingy" target="_blank">githubista</a>. Jos sinulla on parannettavaa koodiin tai vaikka ohjeisiin niin forkkaa ja laita pull request tulemaan!</p>
<img src="http://feeds.feedburner.com/~r/codento/~4/ZM90NZjr8bA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.codento.com/2011/12/aareton-skaalautuvuus/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.codento.com/2011/12/aareton-skaalautuvuus/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=aareton-skaalautuvuus</feedburner:origLink></item>
		<item>
		<title>Pilviennusteita vuodelle 2012</title>
		<link>http://feedproxy.google.com/~r/codento/~3/U14qN1DkkU4/</link>
		<comments>http://blog.codento.com/2011/12/pilviennusteita-vuodelle-2012/#comments</comments>
		<pubDate>Mon, 19 Dec 2011 13:09:07 +0000</pubDate>
		<dc:creator>Santeri Paavolainen</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[ennuste]]></category>
		<category><![CDATA[iaas]]></category>
		<category><![CDATA[paas]]></category>
		<category><![CDATA[pilvi]]></category>

		<guid isPermaLink="false">http://blog.codento.com/?p=927</guid>
		<description><![CDATA[<p>Nyt on taas se aika vuodesta, kun ainakin sen isomman rapakon tuolla puolen on tapana kirjoittaa ennustuksia tulevalle vuodelle. Erityisesti pilviaiheiset veikkaukset tuntuvat olevan varsin suosittuja tänä vuonna (ks. <a href="http://blogs.forrester.com/holger_kisker/11-12-13-10_cloud_predictions_for_2012" target="_blank">täältä</a>, <a href="http://cloudcomputing.sys-con.com/node/2040343" target="_blank">täältä</a>, <a href="http://blogs.forrester.com/james_staten/11-11-28-top_10_cloud_predictions_for_2012_the_awkward_teenage_years_are_upon_us" target="_blank">täältä</a>, <a href="http://www.zdnet.com/blog/virtualization/five-cloud-predictions-for-2012/4241" target="_blank">täältä</a>, <a href="http://searchcloudcomputing.techtarget.com/opinion/Cloud-predictions-for-enterprise-IT-in-2012" target="_blank">täältä</a> ja <a href="http://gigaom.com/cloud/its-cloud-prediction-time-idc-gartner-and-i-weigh-in/" target="_blank">täältä</a>). Itse en aio jaella omia ennustuksiani &#8211; sen [...]]]></description>
			<content:encoded><![CDATA[<p>Nyt on taas se aika vuodesta, kun ainakin sen isomman rapakon tuolla puolen on tapana kirjoittaa ennustuksia tulevalle vuodelle. Erityisesti pilviaiheiset veikkaukset tuntuvat olevan varsin suosittuja tänä vuonna (ks. <a href="http://blogs.forrester.com/holger_kisker/11-12-13-10_cloud_predictions_for_2012" target="_blank">täältä</a>, <a href="http://cloudcomputing.sys-con.com/node/2040343" target="_blank">täältä</a>, <a href="http://blogs.forrester.com/james_staten/11-11-28-top_10_cloud_predictions_for_2012_the_awkward_teenage_years_are_upon_us" target="_blank">täältä</a>, <a href="http://www.zdnet.com/blog/virtualization/five-cloud-predictions-for-2012/4241" target="_blank">täältä</a>, <a href="http://searchcloudcomputing.techtarget.com/opinion/Cloud-predictions-for-enterprise-IT-in-2012" target="_blank">täältä</a> ja <a href="http://gigaom.com/cloud/its-cloud-prediction-time-idc-gartner-and-i-weigh-in/" target="_blank">täältä</a>). Itse en aio jaella omia ennustuksiani &#8211; sen sijaan kommentoin muiden <del>heppoisia</del> veikkauksia. Onhan paljon helpompi olla kriitikko kuin tuottaa todellista sisältöä!</p>
<p>Ennustukset linkittämissäni kirjoituksissa laidasta laitaan. Kuitenkin on mielenkiintoista huomata, että kaiken vaihtelun keskeltä löytyy muutamia yhtenäisiä teemoja. Alla käsittelen kolmea vuoden 2012 ennustuksissa havaitsemaani teemaa:</p>
<h2>PaaS menestyy/epäonnistuu/etsii edelleen itseään</h2>
<p>(Yliviivaa tarpeettomat.)</p>
<p>Monet veikkaavat joko pilvisovellusalustojen eli <a href="http://en.wikipedia.org/wiki/Platform_as_a_service" target="_blank">PaaS</a>:n menestyksen (<a href="http://cloudcomputing.sys-con.com/node/2040343" target="_blank">Krishnan Subramanian</a>, <a href="http://cloudcomputing.sys-con.com/node/2040343" target="_blank">William Toll</a>) tai epäonnistumisen puolesta (Brian Gracely, &#8220;<a href="http://cloudcomputing.sys-con.com/node/2040343" target="_blank">PaaS becomes the overhyped buzzword</a>&#8220;). Ristiriitaiset veikkaukset kielivät varmaankin pettymyksesta PaaS-markkinoiden tämänvuotisesta soutamisesta ja huopaamisesta. VMForcea luvattiin, mutta ei <a href="http://blogs.gartner.com/yefim_natis/2011/08/31/there-will-not-be-a-vmforce/" target="_blank">toimitettu</a>. GAE:n muutos hinnoittelumallissa suhteen oli monille <a href="http://highscalability.com/blog/2011/9/7/what-google-app-engine-price-changes-say-about-the-future-of.html" target="_blank">ikävä yllätys</a> ja oli ainakin hinnoittelupuolella askel IaaS:n suuntaan. Yrityksille dominantin teknologian puute merkitsi suurta toimittajariskiä.</p>
<p>PaaS:n suhteen on valtavia odotuksia. Skaalautuva ja helppokäyttöinen alusta on monen pilvisoftankehittäjän märkä uni. Onko sellainen mahdollinen? Ehdottomasti. Onko sellainen helppo tehdä? Tuskin. Tuleeko sellainen 2012? Itse en löisi rahasta vetoa puoleen enkä vastaan. Eikä PaaS:n määritelmä edes ole selvä (se on jotain mikä on palvelujen ja infran välissä), mikä tietysti johtaa siihen että vuoden 2012 lopussa ennustajat voivat perustella olleensa oikeassa &#8211; veikkauksesta riippumatta.</p>
<p><img class="aligncenter size-full wp-image-945" title="Sumua tiellä" src="http://blog.codento.com/files/2011/12/iStock_000014871226XSmall.jpg" alt="" width="425" height="282" /></p>
<p>Perinteisten työasema- tai palvelinsovellusten maailmasta pilveen siirtyvä kehittäjä toivoo selkeää ohjelmistoalustaa jonka varaan sovelluksen voi rakentaa. Kuitenkin aiempia järjestelmiä määrittelevät niille ominaiset rajoitukset &#8211; joita samoja pilvellä ei ole. Pilvialustoilla on sitten omat rajoituksensa. Pilvisovelluksilta odotettu skaalautuvuus ja dynaamisuus vaativat uusia ohjelmointi- ja arkkitehtuurimalleja &#8211; eli asioita joiden oppimiseen menee oma aikansa, jolloin ohjelmoijan lyhyen tähtäimen tuottavuus väistämättä laskee.</p>
<p>Vaikka joku keksisi &#8211; tai olisi jo keksinyt &#8211; PaaS:n viisasten kiven, ei ole selvää voivatko kehittäjämassat ymmärtää ja sisäistää sellaista vielä täysin vuonna 2012. Client-server mallinkin omaksuminen ja tehokas hyödyntäminen aikanaan vei oman aikansa.</p>
<h2>IaaS:n lopullinen läpimurto tarkoittaa vaikeita aikoja (joillekin)</h2>
<p>&#8220;Läpimurto&#8221; ja &#8220;vaikeat ajat&#8221; ovat oikeasti kaksi eri ennustusta.</p>
<p>Toisaalta IaaS:n oletetaan pääsevän &#8220;mainstreamiin&#8221; eli tilanteeseen, jossa pilvipalvelimien hankinta yritys-IT:n perustyöhön ei ole enää <em>tabu</em> vaan muuttuu yhdeksi hyväksyttäväksi vaihtoehdoksi muiden palveluhostausmallien rinnalle (Randy Bias, &#8220;<a href="http://cloudcomputing.sys-con.com/node/2040343" target="_blank">The market finally &#8216;gets it&#8217;</a>&#8220;, &#8220;<a href="http://searchcloudcomputing.techtarget.com/opinion/Cloud-predictions-for-enterprise-IT-in-2012" target="_blank">IaaS wars</a>&#8220;). Tältä kantilta katsoen omat sähköpostinsa hostaavaa yritystä pidetään arkaaisena (&#8220;<a href="http://searchcloudcomputing.techtarget.com/opinion/Cloud-predictions-for-enterprise-IT-in-2012" target="_blank">On-premises email become archaic</a>&#8220;).</p>
<p>IaaS-mallin nopeus ja kustannusten läpinäkyvyys tulee aiheuttamaan paineita IT-organisaatiolle (&#8220;<a href="http://blogs.forrester.com/james_staten/11-11-28-top_10_cloud_predictions_for_2012_the_awkward_teenage_years_are_upon_us" target="_blank">You will finally have to budget for public cloud spend</a>&#8220;). IT-palvelujen ostajat haluavat samoja asioita myös sisäisiltä IT-palvelujen hankinnoilta (ks. <a href="http://cloudcomputing.sys-con.com/node/2040343" target="_blank">Christian Reillyn veikkaukset</a>, Randy Bias &#8220;<a href="http://cloudcomputing.sys-con.com/node/2040343" target="_blank">Enterprise IT fails on &#8230;</a>&#8220;, Dana Gardner &#8220;<a href="http://cloudcomputing.sys-con.com/node/2040343" target="_blank">App stores set up shop in enterprises</a>&#8220;). Tietoturvan puutteet tai pilvipalvelujen epäluotettavuus eivät toimi enää samanlaisena jarruina niiden käytölle (Ellen Rubin, &#8220;<a href="http://cloudcomputing.sys-con.com/node/2040343" target="_blank">Cloud security stops being a blocker</a>&#8220;).</p>
<p><a href="www.crn.com/slide-shows/cloud/231000954/the-10-biggest-cloud-outages-of-2011-so-far.htm" target="_blank">Tämänvuotiset käyttöhäiriöt</a> ovat osoittaneet muutaman selkeän seikan: 1) katkot eivät olleet totaalinen katastrofi, mikä IT-ongelmien luokassa on &#8220;aika hyvä&#8221; tulos ja 2) katkojen absoluuttinen lukumääräinen vähäisyys ei ole ollenkaan huono asia, ainakaan verrattuna perinteisen mallin odotetuille ja <a href="http://www.itviikko.fi/ratkaisut/2011/01/25/op-pankin-viat-johtuivat-tiedon-konesalista/20111138/7" target="_blank">odottamattomille</a> käyttökatkoille. Itselleni AWS:n tai Googlen pätkäisyt eivät ole tuntuneet juuri ollenkaan, ainakaan kun vertaan toimimattomaan puhelinverkkoon tai päiväkausien pätkäisyissä nettiyhteyksissä.</p>
<p><img class="aligncenter size-full wp-image-947" title="Epävarmoina aikoina" src="http://blog.codento.com/files/2011/12/iStock_000014354302XSmall.jpg" alt="" width="414" height="290" /></p>
<p>IT-palvelujen käyttäjien suunnasta tulee siis paineita IT-organisaation muuttumisesta selvärajaisemmaksi palveluorganisaatioksi. Tavallaan kyseessä on vain yksi lenkki pitkässä tuki- ja palvelinulkoistuksen ketjussa. Pilvipalvelut luovat kuitenkin IT-palvelujen tilaajien ja käyttäjien puolella uudenlaista odotusarvoa palvelun SLA:sta ja laadusta.</p>
<p>Esimerkiksi palvelimien halihostaus (cuddly bear hosting), jossa jokainen palvelin on yksilö ja tärkeä, ei ole in ja pop. Hostaajilta kysytään konekapasiteettia räkki- ja (yksityis)pilven malleilla, joissa koneet ovat bulkkitavaraa. Bulkkikonetta ei halita, vaan hallitaan. Kustannustehokkaasti. Halihostaukseen keskittyvät saattavat törmätä tulevana vuonna &#8220;peak oilin&#8221; tapaiseen &#8220;peak revenue&#8221; ilmiöön (Michael Sheehan, &#8220;<a href="http://cloudcomputing.sys-con.com/node/2040343" target="_blank">Data centers show slower growth</a>&#8220;). Ne jotka pystyvät tarjoamaan kilpailukykyisin hinnoin (ts. ei-niin-paljon-kalliimmin-kuin-AWS/Azure/Rackspace) &#8220;managed private cloud&#8221; ratkaisuja ovat paremmassa asemassa.</p>
<h2>Yksityiset ja hybridipilvet nousevat</h2>
<p>Julkinen pilvi jatkaa vahvaa kasvuaan (Randy Bias, &#8220;<a href="http://cloudcomputing.sys-con.com/node/2040343" target="_blank">AWS continues to rise in prominence</a>&#8220;), mutta sen rinnalle monet yritykset ottavat yksityiset pilviratkaisut käyttöön (Mark Hinkle, &#8220;More private cloud&#8221; ja Michael Sheehan, &#8220;Private clouds rise in the ranks&#8221;). Osalle tämä tarkoittaa vapaan teknologian käyttöä (Ellen Rubnin, &#8220;Private clouds will encompass more than just VMware&#8221;), osa jatkaa nykyisen virtualisointihovihankkijansa yksityispilviratkaisujen helmoissa.</p>
<p>Monet veikkaavat hybridipilvien nousua (<a href="http://www.zdnet.com/blog/virtualization/five-cloud-predictions-for-2012/4241" target="_blank">Ken Hess</a>)- tämä tietysti tarkoittaa myös yksityispilven nousua, sillä sitähän hybridi tarkoittaa &#8211; yksityisen ja julkisen yhdistelmää. <a href="http://searchcloudcomputing.techtarget.com/opinion/Cloud-predictions-for-enterprise-IT-in-2012" target="_blank">Jo Maitland</a> ennustaa hauskasti sekä ongelmia yksityiselle pilvelle, että hybridipilven kasvua. Mutta miten hybridipilvi voi onnistua, jos yksityispilvi tuottaa päänsärkyä?</p>
<p><img class="aligncenter size-full wp-image-946" title="Yhä ylöspäin" src="http://blog.codento.com/files/2011/12/iStock_000014639814XSmall.jpg" alt="" width="425" height="282" /></p>
<p>Pilviteknologiassa on muitakin hyötyjä kuin skaalautuvuus &#8211; kustannuspohjainen laskutus (vaikka yrityksen sisäisellä mikkihiirirahalla) sekä provisioinnin nopeus ovat saavutettavissa myös sisäisessä pilvessä. Oma räkki tai kaksi täynnä koneita ei toki tarjoa samaa skaalautuvuutta kuin julkinen pilvi, mutta ei kaikissa käyttökuormissa sitä tarvitakaan. Siinä missä viime vuonna monet yritykset testasivat yksityisen pilven ratkaisuja, itse uskon tänä vuonna monien siirtyvän pilotointiin ja tuotantokäyttöön. Tosin ensimmäinen käyttökohde ei välttämättä löydy tuotantojärjestelmistä, vaan ennemmin sisäisestä käytöstä kuten tuotekehityksestä ja testauksesta.</p>
<h2>Mitä ei ole sanottu ääneen</h2>
<p>Itse yllätyin siitä, että kukaan ei puhunut yritysten pilvipalveluiden käytöstä itsessään. Olemmeko henkisesti tilanteessa, jossa pilviteknologian käyttö ei ole enää poikkeus?</p>
<p>Itsekin voisin siis ennustaa jotain: Vuonna 2012 yli 50% yrityksistä käyttää pilvipalveluita (muodossa tai toisessa). Vuonna 2012 ne, jotka nojaavat pelkästään perinteiseen IT-arkkitehtuuriin muuttuvat vähemmistöksi.</p>
<p>(Lienee kyllä aika vaikea epäonnistua tässä ennustuksessa.)</p>
<img src="http://feeds.feedburner.com/~r/codento/~4/U14qN1DkkU4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.codento.com/2011/12/pilviennusteita-vuodelle-2012/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.codento.com/2011/12/pilviennusteita-vuodelle-2012/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=pilviennusteita-vuodelle-2012</feedburner:origLink></item>
	</channel>
</rss>

