CINXE.COM
AWSが生まれたのは、Amazonが経費削減のためにSunのサーバからHP/Linuxサーバへ切り替えたことがきっかけ。当時の社員が振り返る - Publickey
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <meta name="description" content="1990年代後半に、米Yahoo!などに代表されるインターネット系企業の株が高騰したインターネットバブルが発生しました。 そのバブルが2000年前後にはじけると、ユーザー数の拡大を背景に資金調達をしてきた企業の多くが投資家からの資金を得られ..." /> <meta property="og:type" content="article"/> <meta property="og:title" content="AWSが生まれたのは、Amazonが経費削減のためにSunのサーバからHP/Linuxサーバへ切り替えたことがきっかけ。当時の社員が振り返る"/> <meta property="og:url" content="https://www.publickey1.jp/blog/21/awsamazonsunhplinux.html"/> <meta property="og:description" content="1990年代後半に、米Yahoo!などに代表されるインターネット系企業の株が高騰したインターネットバブルが発生しました。 そのバブルが2000年前後にはじけると、ユーザー数の拡大を背景に資金調達をしてきた企業の多くが投資家からの資金を得られ..."/> <meta property="fb:app_id" content="171052189635502" /> <meta name="twitter:site" content="@publickey"> <meta name="twitter:title" content="AWSが生まれたのは、Amazonが経費削減のためにSunのサーバからHP/Linuxサーバへ切り替えたことがきっかけ。当時の社員が振り返る"> <meta property="og:image" content="https://www.publickey1.jp/2021/amzon_2000.gif"/> <meta name="twitter:card" content="summary_large_image"> <meta name="twitter:image" content="https://www.publickey1.jp/2021/amzon_2000.gif"> <link rel="alternate" type="application/atom+xml" title="Atom" href="https://www.publickey1.jp/atom.xml" /> <link rel="shortcut icon" href="https://www.publickey1.jp/favicon.ico" /> <link rel="canonical" href="https://www.publickey1.jp/blog/21/awsamazonsunhplinux.html" /> <title>AWSが生まれたのは、Amazonが経費削減のためにSunのサーバからHP/Linuxサーバへ切り替えたことがきっかけ。当時の社員が振り返る - Publickey</title> <script>if(window.parent.screen.width < 728 ) {document.head.insertAdjacentHTML('beforeend', '<meta name="viewport" content="width=728" />');} </script> <style> /* css_global_desktop begin */ body {font-family: 'Hiragino Kaku Gothic ProN', 'ヒラギノ角ゴ ProN W3', Meiryo, メイリオ, sans-serif} body {margin:0; padding: 0; font-size:16px; line-height: 1.8; min-width:930px} a {text-decoration: none; color: #0000bb} a:hover {text-decoration: underline;} h4 {font-size:14px; font-weight:bold; border-bottom: 1px solid; padding: 4px 0 1px 0; margin:0 0 8px 0} h5 {font-size:13px; font-weight:bold; border-bottom: 1px solid; padding: 4px 0 1px 0; margin:0 0 8px 0} #header {height: 55px; background-color: #192a3f; margin-bottom: 10px; width:100%;} .header_inner {width:900px; margin: 0 auto;} .publickey_logo {width: 590px; padding: 12px 0 0 0; float: left;} .googlesearch {width:300px;height:60px; display:table-cell; vertical-align:middle} .gsc-control-cse {padding:0 !important} #superbanner {width:810px;margin:0 auto 15px auto;} #container {width:900px; margin:0 auto; background:linear-gradient(90deg,rgba(0,0,0,0) 0,rgba(0,0,0,0) 570px,rgba(150,150,150,0.15) 570px,rgba(150,150,150,0.15) 900px)} .maincol {width:550px; float:left} .subcol {width:300px; padding: 8px 15px; margin-left: auto; font-size: 14px; line-height: 1.6} .rectangle1 {padding-bottom: 0} .bloggerinchief {padding-top:4px} .bloggerinchief h4 {padding-top:0px; margin-top:0px} .bloggerinchief p{margin-top: 0px; padding-top:0px; line-height:1.5} #footer{background-color:#192a3f; padding: 30px; font-size:13px; color: white} #footer a {color:white} .footer_inner {width:900px; height:70; margin: 0 auto;} .aboutus ul {padding-left:20px; margin-top:4px} .clearfix::after {content:" "; display:block; clear:both;} .subcol ol {padding: 0; margin: 0 0 1em 15px;} .subcol ol li {margin-left: .5em; padding:0 0 .7em 0} .subcol ul {padding: 0; margin: 0 0 1em 15px; text-indent: -1em;} .subcol ul li {padding:0 0 .7em 0; list-style: none outside;} .subcol ul li:before {content: ""; display: inline-block; width: 3px; height: 3px; background: #777; margin: 0 .85em 0 0; vertical-align: .3em;} .category ul li {padding-bottom:.1em} .ranking ol{counter-reset:n; list-style-type:none} .ranking ol li {padding-left: .5em;} .ranking li:before {counter-increment: n; content: counter(n); display:inline-block; background: #8ae; color: white; width: 1.5em; height: 1.5em; text-align: center; margin-left: -2em; margin-right: .5em; border-radius: 30%} /* css_global_desktop end */ .rectangle1 {display:none;} .rectangle2 {display:none;} .pubdate {font-size:13px; text-align:right; padding: 24px 0 4px 0} #maincol {width: 550px; float:left} #maincol h1 {margin:0; padding:8px 0 0 0; font-size:20px; font-weight:bold; line-height:1.5} #maincol h2 {margin:0 0 .5em 0; padding: 0; font-size: 1em; line-height: 1.5; font-weight: bold; border-bottom: solid 1px black;} #maincol h3 {margin:0 0 .5em 0; padding: 0; font-size: 1em; line-height: 1.5; font-weight: bold;} #maincol h4 {margin:0 0 .5em 0; padding: 0; font-size: 1em; line-height: 1.5; font-weight: bold; border-bottom:none;} #maincol p {margin:0; padding: 0 0 1em 0;} #maincol ul {padding: 0 0 1em 0.1em; margin: 0 0 0 1.1em; list-style-position: outside; list-style: none; text-indent: .5em;} #maincol ul li:before {content: ""; display: inline-block; width: 0; height: 0; margin-right: 4px; margin-left: -1.5em; border: transparent solid 0.4em; border-left-color: #888;} #maincol li {padding: 0 0 0.5em 0; margin: 0;} .tags a {padding: 0em .5em 0em .5em; border: 1px solid #888; border-radius: .2em; color:#000; word-break:keep-all; font-size:14px} .imgLeft {float:left; font-size: 12px; padding-right: 24px; line-height: 130%;} .imgRight {float:right; font-size: 12px; padding-left: 12px; line-height: 130%;} .imgCenter {margin-left: auto; margin-right: auto; margin-bottom: 1.5em; font-size: 12px; line-height: 130%;} .imgLeft img, .imgCenter img, .imgRight img {border: solid 1px #aaa; margin-bottom: 4px;} .noborder img {border: none;} .imgLeft span.caption, .imgCenter span.caption, .imgRight span.caption {display:block;} .imgLeft span.title, .imgCenter span.title, .imgRight span.title {font-weight: bold; padding-right: 1em;} .entrybody em {font-style: normal; font-weight: bold;} .entrybody blockquote {margin: .5em 2em 1em .5em; padding-left: 1em; border-left: solid 4px #bbb;} .entrybody blockquote p {padding: .4em 0 .6em 0;} .entrybody pre {background: #112; color: white; padding: 1em; line-height: 1.5;font-family: Consolas,} .entrybody code {font-family: Menlo, Consolas} .video {float: left;} .video img {width: 109px; height: 82px; padding: 0 10px 1em 0; float: left; border: none; margin: 0;} .book {float: left; line-height: 1.5;} .book img {padding: 0 10px 1em 0; float: left;} @media screen and (max-width:728px) { /* css_global_mobile begin */ body {min-width:728px} #header {padding:15px 0 35px 0} #container {width:100%; border: solid #cccccc 0px; background:linear-gradient(90deg,rgba(0,0,0,0) 0%,rgba(0,0,0,0) 100%)} .header_inner {width:700px; margin: 0 8px} .publickey_logo {width: 420px; padding-left: 8px} .googlesearch {padding:0;} #superbanner {width:100%;} #maincol {width: 668px; margin:0 auto; float:none; font-size: 32px} .maincol {width:668px; float:none; margin: 0 auto;} .imgCenter {width: 100% !important} .imgCenter img {width: 100% !important ; height:auto} /* .newentries {padding-left: 16px}*/ .subcol {width: 668px; margin:0 auto; padding:0 ; font-size: 32px} .rectangle1 {padding:0 0 12px 20px; width:300px; float:right} .footer_ad {padding-left: 32px} .rectangle2 {padding:0 0 12px 20px; width:300px; float:right} .ranking {} .backnumber {padding:0 8px 0 16px} #footer {padding:0} .footer_inner {width:650px; padding: 15px 16px; margin:0} h4 {font-size:32px; font-weight:normal} .ranking ol {padding-left:28px;margin-left:0} .subcol ul {margin-left:30px;} .subcol li {line-height:1.5} .bloggerinchief {line-height:1.4} .bloggerinchief p{padding-left:8px;} .backnumber {font-size: 20px} .footer_inner {font-size:20px; line-height: 1.4} /* css_global_mobile end */ .rectangle1 {display:block;} .rectangle2 {display:block;} #maincol h1 {font-size:36px; padding:1em 0;} #maincol .pubdate {font-size:28px; text-align:left} #breadcrumbs ol {font-size:32px} #maincol .caption {font-size:28px; line-height:1.4;} .newarticles10 {font-size:32px} .tags a {font-size:22px} .subcol ul {padding: 0 0 1em 0.1em; margin: 0 0 0 1.1em; list-style-position: outside; list-style: none; text-indent: .5em;} .subcol ul li:before {content: ""; display: inline-block; width: 0; height: 0; margin-right: 4px; margin-left: -1.5em; border: white solid 0.4em; border-left-color: #888;} .subcol li {padding: 0 0 0.5em 0; margin: 0;} .rectangle2 {margin-right:-30px} } @media (prefers-color-scheme: dark) { /* css_global_darkmode begin */ body {background:#222; color:#eee} a {color: #44b9d6} .tags a { color:#eee } .ranking li:before { background: #28a;} /* css_global_darkmode end */ #maincol h2 {border-bottom: solid 1px #CCC;} } </style> </head> <body> <!-- Google Ad Server設定--> <script async src="https://securepubads.g.doubleclick.net/tag/js/gpt.js"></script> <script> window.googletag = window.googletag || {cmd: []}; googletag.cmd.push(function() { googletag.defineSlot('/3002452/Pbk_SBanr01_728x90', [728, 90], 'div-gpt-ad-1502193665854-0').addService(googletag.pubads()); googletag.defineSlot('/3002452/Pbk_Rect1_300x300', [300, 300], 'div-gpt-ad-1502193859622-0').addService(googletag.pubads()); googletag.defineSlot('/3002452/Pbk_Rect2_300x250', [300, 250], 'div-gpt-ad-1502193912880-0').addService(googletag.pubads()); googletag.defineSlot('/3002452/Pbk_Footer_520x260', [520, 260], 'div-gpt-ad-1502193942098-0').addService(googletag.pubads()); googletag.pubads().enableSingleRequest(); googletag.pubads().collapseEmptyDivs(); googletag.enableServices(); }); </script> <!-- Simple Analytics Placeholder event function --> <script>window.sa_event=window.sa_event||function(){var a=[].slice.call(arguments);window.sa_event.q?window.sa_event.q.push(a):window.sa_event.q=[a]};</script> <div id="header"> <div class="header_inner"> <div class="publickey_logo"> <a href="https://www.publickey1.jp/"> <picture><source srcset="https://www.publickey1.jp/logo4mobile.png" width="204" height="60" alt="Publickey" media="(max-width: 728px)"/> <img src="https://www.publickey1.jp/logo201708b.gif" width="330" height="40" alt="Publickey" /></picture> </a> </div> <!-- Google Programmable Search --> <style> #pblsc {height: 30px; width : 74px; margin: 11px 6px; background-color:#3070f0;border-radius:8px; float:right} #pblsc svg {height: 24px; width: 24px; padding:4px 27px; fill: #fff;} /* The Modal (background) */ .modal { display: none; /* Hidden by default */ position: fixed; /* Stay in place */ z-index: 1; /* Sit on top */ left: 0; top: 0; width: 100%; /* Full width */ height: 100%; /* Full height */ overflow: auto; /* Enable scroll if needed */ background-color: rgba(0,0,0,0.4); /* Black w/ opacity */ } /* Modal Content/Box */ .modal-content { background-color: #fefefe; margin: 5% auto; /* 5% from the top and centered */ padding: 20px; border: 1px solid #888; width: 700px; /* Could be more or less, depending on screen size */ } /* The Close Button */ .close { color: #aaa; float: right; font-size: 28px; font-weight: bold; } .close:hover, .close:focus { color: black; text-decoration: none; cursor: pointer; } </style> <div id="pblsc"> <svg focusable="false" stroke="#fff" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"> <path d="M15.5 14h-.79l-.28-.27A6.471 6.471 0 0 0 16 9.5 6.5 6.5 0 1 0 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z"></path> </svg> </div> <div id="search-modal" class="modal"> <div class="modal-content"> <span class="close">×</span> <gcse:search></gcse:search> </div> </div> <!-- End of Google Programable Search--> </div> </div><!-- End of Header --> <div id="superbanner"> <!-- /3002452/Pbk_SBanr01_728x90 --> <div id='div-gpt-ad-1502193665854-0' style='height:90px; width:728px;margin: 0 auto 20px auto'> <script>googletag.cmd.push(function() { googletag.display('div-gpt-ad-1502193665854-0'); });</script> </div> </div><!-- End of superbanner --> <!-- /3002452/Pbk_Rect1_300x300 --> <div id='div-gpt-ad-1502193859622-0' class="rectangle1 subcol clearfix" style='height:300px; width:300px;'> <script>googletag.cmd.push(function() { googletag.display('div-gpt-ad-1502193859622-0'); });</script> </div> <!-- /3002452/Pbk_Rect2_300x250 --> <div id='div-gpt-ad-1502193912880-0' class="rectangle2 subcol clearfix" style='height:250px; width:300px; padding-top:28px;'> <script>googletag.cmd.push(function() { googletag.display('div-gpt-ad-1502193912880-0'); });</script> </div> <div id="container" class="clearfix"> <div id="maincol" data-pagefind-body> <h1>AWSが生まれたのは、Amazonが経費削減のためにSunのサーバからHP/Linuxサーバへ切り替えたことがきっかけ。当時の社員が振り返る</h1> <div class="pubdate">2021年1月12日 </div><!--<br />--> <br> <div class="entrybody clearfix"> <p>1990年代後半に、米Yahoo!などに代表されるインターネット系企業の株が高騰したインターネットバブルが発生しました。</p> <p>そのバブルが2000年前後にはじけると、ユーザー数の拡大を背景に資金調達をしてきた企業の多くが投資家からの資金を得られなくなり、行き詰まり始めます。</p> <p>Amazon.comもそうした状況のなかで先行きを不安視された企業の1つでした。2001年4月の週刊東洋経済の記事には、最高値の10分の1程度にまで下がった株価のグラフとともに、「莫大な酸素(キャッシュ)を燃やし続けている」「2000年12月末時点で2000億円を超える債務超過だ」と記されています。</p> <div class="imgCenter" style="width:547px;"><img src="//www.publickey1.jp/2021/amzon_2000.gif" alt="fig" /> </div> <p>当時Amazon.comのデジタルメディア部門ディレクターであったDan Rose氏は、このとき大きな支出は高価なSun Microsystemsのサーバを抱えるデータセンターだったため、それを安価なHPのLinuxサーバに切り替えたことが、Amazon Web Services(AWS)が生まれたきっかけになったと一連のツイッターで振り返っています。</p> <blockquote class="twitter-tweet"><p lang="en" dir="ltr">I was at Amzn in 2000 when the internet bubble popped. Capital markets dried up & we were burning $1B/yr. Our biggest expense was datacenter -> expensive Sun servers. We spent a year ripping out Sun & replacing with HP/Linux, which formed the foundation for AWS. The backstory:</p>— Dan Rose (@DanRose999) <a href="https://twitter.com/DanRose999/status/1347677573900242944?ref_src=twsrc%5Etfw">January 8, 2021</a></blockquote> <p>(インターネットバブルがはじけた2000年、私はAmazon.comにいた。資本市場は干上がり、われわれは1年ごとに10億ドル(約1000億円)の費用を燃やしていた。最大の支出は高価なSunのサーバ群を抱えるデータセンターだった。そこで私たちは1年かけてSunをHPのLinuxサーバへと置き換えていったが、これがAWSの基礎となった。この頃のことを振り返ってみよう)</p> <p>Dan Rose氏は1999年から2006年までAmazon.comに勤務。その後Facebookのパートナー担当VPとなり、現在はベンチャーキャピタルのCoatue Managementに務めている人物。</p> <p>大変興味深いツイートでしたので、続けて紹介しようと思います。</p> <h2>Jeff Bezos氏、高価なSunサーバをHP/Linuxへ置き換えると決断</h2> <blockquote class="twitter-tweet" data-conversation="none"><p lang="en" dir="ltr">Our motto was "get big fast." Site stability was critical - every second of downtime was lost sales - so we spent big $$ to keep the site up. Sun servers were the most reliable so all internet co's used them back then, even though Sun's proprietary stack was expensive & sticky.</p>— Dan Rose (@DanRose999) <a href="https://twitter.com/DanRose999/status/1347677575972208645?ref_src=twsrc%5Etfw">January 8, 2021</a></blockquote> <p>(当時の私たちのモットーは「より速く大きくなる」であり、サイトの安定稼働こそ私たちにとって最重要だった。というのもダウンタイムの1秒ごとに売り上げを失うのだ、だからサイトを稼働させ続けることに大金を使っていた。Sunはプロプライエタリで高価であったがもっとも信頼性が高いサーバであったため、あらゆるインターネット企業が使っていた)</p> <blockquote class="twitter-tweet" data-conversation="none"><p lang="en" dir="ltr">In 2000, brand new Sun servers started appearing on eBay for 10 cents on the dollar as VC-backed start-ups went out of business (this was pre-AWS when you had to roll your own datacenter). Amzn could have negotiated a better deal with Sun, but Jeff chose a more radical approach.</p>— Dan Rose (@DanRose999) <a href="https://twitter.com/DanRose999/status/1347677576953688066?ref_src=twsrc%5Etfw">January 8, 2021</a></blockquote> <p>(2000年に入り、ベンチャーキャピタルからの追加投資が得られずに破産したスタートアップが放出した新品のSunサーバが何台も、eBayで10セントから競売に出始めた(当時はAWS登場以前だったから、自分たちでデータセンターを持つ必要があったのだ)。だからAmazonはSunに対して値切ることもできたが、Jeff(新野注:Jeff Bezos CEO)はもっと大胆なアプローチを選んだ)</p> <blockquote class="twitter-tweet" data-conversation="none"><p lang="en" dir="ltr">Amazon's CTO was Rick Dalzell - ex-Walmart, hard-charging operator. He pivoted the entire eng org to replace Sun with HP/Linux. Linux kernel was released in '94, same year Jeff started Amzn. 6 years later we were betting the company on it, a novel and risky approach at the time.</p>— Dan Rose (@DanRose999) <a href="https://twitter.com/DanRose999/status/1347677578006384641?ref_src=twsrc%5Etfw">January 8, 2021</a></blockquote> <p>(AmazonのCTOはRick Dalzell、ウォルマート出身の猪突猛進型だ。彼はエンジニア組織全部を使ってSunをHP/Linuxに置き換えた。Linuxのカーネルがリリースされたのが94年で、JeffがAmazonをスタートさせたのと同じ年だ。6年たって、私たちは全社でそれに賭けることにしたが、当時それは斬新でリスキーなアプローチだった)</p> <p>Dan Rose氏が振り返るように、インターネットバブルの頃は、高性能なWebサーバと言えばSun MicrosystemsのSolaris/SPARCサーバがその代表であり、それをシスコのルータ経由でインターネットに接続するのが大規模Webサイトの典型的な構成でした。</p> <p>これをx86サーバとLinuxに置き換えるというのは、当時のx86サーバの能力やLinuxの成熟度、その上で大規模なECサイトを稼働させることなどを考えると、たしかに斬新かつリスキーなアプローチだったと言えるでしょう。</p> <p>2010年にSun Microsystemsはオラクルに買収されるわけですが、その後の技術の潮流を考えれば、このインターネットバブルの頃が同社の最盛期だったのかもしれません。</p> <p>Dan Rose氏のツイートに戻りましょう。</p> <p>Jeff Bezos氏の決断によりSunサーバをHP/Linuxへ置き換えることにした同社は、しかし置き換えに失敗すれば倒産というところまで追い詰められます。</p> <h2>HP/Linuxへの置き換えに失敗すれば、Webサイトは落ち会社は死ぬ</h2> <blockquote class="twitter-tweet" data-conversation="none"><p lang="en" dir="ltr">Product development ground to a halt during the transition, we froze all new features for over a year. We had a huge backlog but nothing could ship until we completed the shift to Linux. I remember an all-hands where one of our eng VPs flashed an image of a snake swallowing a rat</p>— Dan Rose (@DanRose999) <a href="https://twitter.com/DanRose999/status/1347677579029876736?ref_src=twsrc%5Etfw">January 8, 2021</a></blockquote> <p>(HP/Linuxへの移行作業のあいだ製品開発は止まり、1年以上にわたり新機能が凍結された。膨大なバックログを抱えたものの、Linuxへの移行が完了するまで何も提供できなかった。私は、ある全員参加型の会議で、 VPの一人が蛇がネズミを無理やり飲み込もうとしている画像をちらりと見せたのを覚えている)</p> <blockquote class="twitter-tweet" data-conversation="none"><p lang="en" dir="ltr">This coincided with - and further contributed to - deceleration in revenue growth as we also had to raise prices to slow burn. It was a viscous cycle, and we were running out of time as we ran out of money. Amzn came within a few quarters of going bankrupt around this time.</p>— Dan Rose (@DanRose999) <a href="https://twitter.com/DanRose999/status/1347677580023926787?ref_src=twsrc%5Etfw">January 8, 2021</a></blockquote> <p>(手持ち資金が燃え尽きるのを遅らせるために販売価格引き上げなければならなかったことと、収益の伸びが鈍化したことなどが重なった。私たちの残り資金と残り時間はなくなろうとしており、あと数四半期以内には倒産するところまで追い込まれた)</p> <blockquote class="twitter-tweet" data-conversation="none"><p lang="en" dir="ltr">But once we started the transition to Linux, there was no going back. All hands on deck refactoring our code base, replacing servers, preparing for the cutover. If it worked, infra costs would go down by 80%+. If it failed, the website would fall over and the company would die.</p>— Dan Rose (@DanRose999) <a href="https://twitter.com/DanRose999/status/1347677581013786624?ref_src=twsrc%5Etfw">January 8, 2021</a></blockquote> <p>(Linuxへの移行を開始すると、もう後戻りはできない。全員でコードベースのリファクタリング、サーバーの交換、カットオーバーの準備をした。うまくいけば、インフラコストは80%以上削減できる。しかしもし失敗すればWebサイトは落ち、会社は死ぬことになる)</p> <h2>余ったサーバ能力を他社に貸し出したらどうだろう?</h2> <blockquote class="twitter-tweet" data-conversation="none"><p lang="en" dir="ltr">We finally completed the transition, just in time and without a hitch. It was a huge accomplishment for the entire engineering team. The site chugged on with no disruption. Capex was massively reduced overnight. And we suddenly had an infinitely scalable infrastructure.</p>— Dan Rose (@DanRose999) <a href="https://twitter.com/DanRose999/status/1347677582016188416?ref_src=twsrc%5Etfw">January 8, 2021</a></blockquote> <p>(私たちはついに移行を完了させた、時間通りに、滞りなく。これはエンジニアリングチーム全体にとって大きな成果だった。サイトは何の混乱もなく稼働していた。設備投資は一晩で大幅に削減された。そして、私たちは突然、無限に拡張可能なインフラストラクチャを手に入れたのだ)</p> <blockquote class="twitter-tweet" data-conversation="none"><p lang="en" dir="ltr">Then something even more interesting happened. As a retailer we had always faced huge seasonality, with traffic and revenue surging every Nov/Dec. Jeff started to think - we have all this excess server capacity for 46 weeks/year, why not rent it out to other companies?</p>— Dan Rose (@DanRose999) <a href="https://twitter.com/DanRose999/status/1347677583010267138?ref_src=twsrc%5Etfw">January 8, 2021</a></blockquote> <p>(すると、さらに興味深いことが起こる。小売業として私たちは、毎年11月と12月にはトラフィックと売り上げが跳ね上がるという、季節ごとの変動にさらされている。そこでJeffは考え始めた……私たちには年間46週分の余ったサーバ能力がある。これを他社に貸し出したらどうだろう?)</p> <blockquote class="twitter-tweet" data-conversation="none"><p lang="en" dir="ltr">Around this same time, Jeff was also interested in decoupling internal dependencies so teams could build without being gated by other teams. The architectural changes required to enable this loosely coupled model became the API primitives for AWS.</p>— Dan Rose (@DanRose999) <a href="https://twitter.com/DanRose999/status/1347677584008511488?ref_src=twsrc%5Etfw">January 8, 2021</a></blockquote> <p>(同じくこの頃、Jeffは社内のチームのデカップリングについても興味を持ち始め、他のチームからの許可なく別のチームがビルドできるようにした。この疎結合モデルを可能にするために必要なアーキテクチャの変更が、AWSにとってのAPIの基礎となった)</p> <blockquote class="twitter-tweet" data-conversation="none"><p lang="en" dir="ltr">These were foundational insights for AWS. I remember Jeff presenting at an all-hands, he framed the idea in the context of the electric grid. In 1900, a business had to build its own generator to open a shop. Why should a business in 2000 have to build its own datacenter?</p>— Dan Rose (@DanRose999) <a href="https://twitter.com/DanRose999/status/1347677585006727168?ref_src=twsrc%5Etfw">January 8, 2021</a></blockquote> <p>(これらがAWSの基本的な考え方となったのだ。私が覚えているのは、Jeffが全員参加の会議において、(AWSのようなクラウドを)電力網の文脈で考えていたことである。1900年代、ビジネスを始めるには自力で電力をまかなう必要があったが、2000年代にビジネスをはじめるのになぜ自社でデータセンターを保有しなければならないのかと)</p> <h2>善き危機を無駄にする事なかれ</h2> <blockquote class="twitter-tweet" data-conversation="none"><p lang="en" dir="ltr">Cloud infrastructure would have emerged eventually even w/out AWS (like electric vehicles w/out Tesla), but how much later and at what opportunity cost ? After the cost of starting a company was reduced dramatically by AWS, innovation exploded and the modern VC ecosystem was born</p>— Dan Rose (@DanRose999) <a href="https://twitter.com/DanRose999/status/1347677585992347649?ref_src=twsrc%5Etfw">January 8, 2021</a></blockquote> <p>(AWSが存在しなかったとしてしもクラウドは登場していただろう(テスラが存在しなくとも電気自動車が登場したように)。しかしどれだけその時期が遅れ、機会損失になっただろうか? AWSの登場で起業のコストは劇的に下がり、イノベーションの爆発が起こり、現代的なベンチャーキャピタルのエコシステムが生まれたのだ)</p> <blockquote class="twitter-tweet" data-conversation="none"><p lang="en" dir="ltr">Amzn nearly died in 2000-2003. But without this crisis, it's unlikely the company would have made the hard decision to shift to a completely new architecture. And without that shift, AWS may never have happened. Never let a good crisis go to waste!</p>— Dan Rose (@DanRose999) <a href="https://twitter.com/DanRose999/status/1347677586982227968?ref_src=twsrc%5Etfw">January 8, 2021</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script> <p>(Amazonは2000年から2003年にかけて倒産の瀬戸際まで追い詰められた。しかしこの危機なしには、完全に新しいアーキテクチャに移行するという難しい決断はできなかったのではないだろうか。そしてこの移行なしにAWSは生まれなかったのではないだろうか。善き危機を無駄にする事なかれ!)</p> </div><!-- end of entrybody --> <h4>あわせて読みたい</h4> <p class="tags" itemscope itemtype="https://schema.org/Thing"><span itemprop="keywords"> <a href="https://www.publickey1.jp/cloud/aws/">AWS</a> <a href="https://www.publickey1.jp/os/linux/">Linux</a> <a href="https://www.publickey1.jp/cloud/">クラウド</a> </span></p> <!-- 関連記事表示 by jniino --> <div id="relarticles" n="4" ></div> <!-- シェアボタン --> <div class="sharebuttons" style="padding:12px 0 20px 0; height:34px"> <div style="float:left; padding-right:10px;"><a href="https://b.hatena.ne.jp/entry/" class="hatena-bookmark-button" data-hatena-bookmark-layout="basic-label-counter" data-hatena-bookmark-lang="ja" data-hatena-bookmark-width="130" data-hatena-bookmark-height="34" title="このエントリーをはてなブックマークに追加"><img src="https://b.st-hatena.com/images/v4/public/entry-button/button-only@2x.png" alt="このエントリーをはてなブックマークに追加" width="20" height="20" style="border: none;" /></a></div> <div style="float:left; padding-right:10px;"><a href="http://www.facebook.com/share.php?u=https%3A%2F%2Fwww.publickey1.jp%2Fblog%2F21%2Fawsamazonsunhplinux.html" rel="nofollow noopener" target="_blank"><img src="//www.publickey1.jp/2024/fbshare_btn.png" width="110" height="34" alt="fbシェア" style="border-radius: 3px;"/></a></div> <div style="float:left; padding-right:10px;"><a href="https://twitter.com/intent/tweet?original_referer=https%3A%2F%2Fwww.publickey1.jp%2F&text=AWS%E3%81%8C%E7%94%9F%E3%81%BE%E3%82%8C%E3%81%9F%E3%81%AE%E3%81%AF%E3%80%81Amazon%E3%81%8C%E7%B5%8C%E8%B2%BB%E5%89%8A%E6%B8%9B%E3%81%AE%E3%81%9F%E3%82%81%E3%81%ABSun%E3%81%AE%E3%82%B5%E3%83%BC%E3%83%90%E3%81%8B%E3%82%89HP%2FLinux%E3%82%B5%E3%83%BC%E3%83%90%E3%81%B8%E5%88%87%E3%82%8A%E6%9B%BF%E3%81%88%E3%81%9F%E3%81%93%E3%81%A8%E3%81%8C%E3%81%8D%E3%81%A3%E3%81%8B%E3%81%91%E3%80%82%E5%BD%93%E6%99%82%E3%81%AE%E7%A4%BE%E5%93%A1%E3%81%8C%E6%8C%AF%E3%82%8A%E8%BF%94%E3%82%8B%20%EF%BC%8D%20Publickey&url=https%3A%2F%2Fwww.publickey1.jp%2Fblog%2F21%2Fawsamazonsunhplinux.html" target="_blank"><img src="//www.publickey1.jp/2024/xpost_btn.png" width="76" height="34" alt="Xポスト" style="border-radius: 3px;"/></a></div> <div style="float:left; padding-right:10px;"><a href='https://feedly.com/i/subscription/feed%2Fhttps%3A%2F%2Fwww.publickey1.jp%2Fatom.xml' target='blank'><img src="//www.publickey1.jp/2024/feedly_btn.png" width="95" height="34" alt="Feedly" style="border-radius: 3px;"/></a></div> </div> <div class="ad_footer"> <!--記事下テキスト広告ここから--> <div id="belowarticle"></div> <h4>Publickey広告</h4> <ul id="BelowTextAd" style="padding:0 0 0.5em 0.1em; display: flex; flex-direction:column"> <li><strong><a href="https://bit.ly/3XkYpIN" data-sa-link-event="adv_clicks">Java開発でExcelを高速生成。クラウド/サーバーアプリ開発を支援。</a></strong><br>Java対応のExcelファイル高速生成コンポーネント。<br />動作環境にExcelのインストールは不要。PDF/HTML出力も可能。</li> <li><strong><a href="https://cn.teldevice.co.jp/column/60958/" data-sa-link-event="ted_clicks">新野淳一が解説する「プラットフォームエンジニアリング」</a></strong><br>ディベロッパーエクスペリエンスの向上を実現して<br />ソフトウェア開発者により多くのビジネス価値創造の可能性を</li> </ul> <script> function AdTextRandomize() {var e = document.querySelector('#BelowTextAd');for(var i=e.children.length-1;i>=0;i--){e.children[i].style.order = Math.floor(Math.random() * 10);}} AdTextRandomize(); </script> <!--記事下テキスト広告ここまで--> <!-- /3002452/Pbk_Footer_520x260 --> <br><div id='div-gpt-ad-1502193942098-0' style='height:260px; width:520px;'> <script> googletag.cmd.push(function() { googletag.display('div-gpt-ad-1502193942098-0'); }); </script> </div><!-- end of Pbk_Footer_520x260 --> </div><!--ad_footer--> <br> <div id="prevnext"> <em>≫次の記事</em><br /><a href="https://www.publickey1.jp/blog/21/net_5blazor_webassemblycomponentone.html">.NET 5やBlazor WebAssemblyに対応する表形式のグリッドやチャートなどのコンポーネントを揃えた「ComponentOne」最新版が登場</a><br /><br /> <em>≪前の記事</em><br /><a href="https://www.publickey1.jp/blog/21/webassemblywinmaclinuxwasmer_10.html">WebAssemblyをWin/Mac/Linuxで実行可能なランタイム「Wasmer 1.0」正式リリース。事前コンパイルによる高速起動やクロスコンパイルなどにも対応</a> </div><!-- PrevNext --> <br><br> </div><!-- end of maincol --> <div class="category subcol"> <style>.bi {display: inline-block; width: 2.5em; height:1.1em; vertical-align: middle;} .taglist {padding-left:2em;text-indent: -2.7em;padding-bottom:0.4em;margin: 0;} @media (prefers-color-scheme: dark) {.bi{stroke:#CCC;}} </style> <h4>タグクラウド</h4> <svg xmlns="http://www.w3.org/2000/svg" style="display: none;"> <symbol id="bi-cloud" viewBox="0 0 16 16"> <path d="M4.406 3.342A5.53 5.53 0 0 1 8 2c2.69 0 4.923 2 5.166 4.579C14.758 6.804 16 8.137 16 9.773 16 11.569 14.502 13 12.687 13H3.781C1.708 13 0 11.366 0 9.318c0-1.763 1.266-3.223 2.942-3.593.143-.863.698-1.723 1.464-2.383zm.653.757c-.757.653-1.153 1.44-1.153 2.056v.448l-.445.049C2.064 6.805 1 7.952 1 9.318 1 10.785 2.23 12 3.781 12h8.906C13.98 12 15 10.988 15 9.773c0-1.216-1.02-2.228-2.313-2.228h-.5v-.5C12.188 4.825 10.328 3 8 3a4.53 4.53 0 0 0-2.941 1.1z"/> </symbol> <symbol id="bi-box-seam" viewBox="0 0 17.5 16"> <path d="M8.186 1.113a.5.5 0 0 0-.372 0L1.846 3.5l2.404.961L10.404 2l-2.218-.887zm3.564 1.426L5.596 5 8 5.961 14.154 3.5l-2.404-.961zm3.25 1.7-6.5 2.6v7.922l6.5-2.6V4.24zM7.5 14.762V6.838L1 4.239v7.923l6.5 2.6zM7.443.184a1.5 1.5 0 0 1 1.114 0l7.129 2.852A.5.5 0 0 1 16 3.5v8.662a1 1 0 0 1-.629.928l-7.185 2.874a.5.5 0 0 1-.372 0L.63 13.09a1 1 0 0 1-.63-.928V3.5a.5.5 0 0 1 .314-.464L7.443.184z"/> </symbol> <symbol id="bi-terminal" viewBox="0 0 18 16"> <path d="M6 9a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 0 1h-3A.5.5 0 0 1 6 9zM3.854 4.146a.5.5 0 1 0-.708.708L4.793 6.5 3.146 8.146a.5.5 0 1 0 .708.708l2-2a.5.5 0 0 0 0-.708l-2-2z"/> <path d="M2 1a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V3a2 2 0 0 0-2-2H2zm12 1a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V3a1 1 0 0 1 1-1h12z"/> </symbol> <symbol id="bi-file-earmark-code" viewBox="0 0 17 16"> <path d="M14 4.5V14a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2h5.5L14 4.5zm-3 0A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V4.5h-2z"/> <path d="M8.646 6.646a.5.5 0 0 1 .708 0l2 2a.5.5 0 0 1 0 .708l-2 2a.5.5 0 0 1-.708-.708L10.293 9 8.646 7.354a.5.5 0 0 1 0-.708zm-1.292 0a.5.5 0 0 0-.708 0l-2 2a.5.5 0 0 0 0 .708l2 2a.5.5 0 0 0 .708-.708L5.707 9l1.647-1.646a.5.5 0 0 0 0-.708z"/> </symbol> <symbol id="bi-people" viewBox="0 0 16 16"> <path d="M15 14s1 0 1-1-1-4-5-4-5 3-5 4 1 1 1 1h8Zm-7.978-1A.261.261 0 0 1 7 12.996c.001-.264.167-1.03.76-1.72C8.312 10.629 9.282 10 11 10c1.717 0 2.687.63 3.24 1.276.593.69.758 1.457.76 1.72l-.008.002a.274.274 0 0 1-.014.002H7.022ZM11 7a2 2 0 1 0 0-4 2 2 0 0 0 0 4Zm3-2a3 3 0 1 1-6 0 3 3 0 0 1 6 0ZM6.936 9.28a5.88 5.88 0 0 0-1.23-.247A7.35 7.35 0 0 0 5 9c-4 0-5 3-5 4 0 .667.333 1 1 1h4.216A2.238 2.238 0 0 1 5 13c0-1.01.377-2.042 1.09-2.904.243-.294.526-.569.846-.816ZM4.92 10A5.493 5.493 0 0 0 4 13H1c0-.26.164-1.03.76-1.724.545-.636 1.492-1.256 3.16-1.275ZM1.5 5.5a3 3 0 1 1 6 0 3 3 0 0 1-6 0Zm3-2a2 2 0 1 0 0 4 2 2 0 0 0 0-4Z"/> </symbol> <symbol id="bi-database" viewBox="0 0 16 16"> <path d="M4.318 2.687C5.234 2.271 6.536 2 8 2s2.766.27 3.682.687C12.644 3.125 13 3.627 13 4c0 .374-.356.875-1.318 1.313C10.766 5.729 9.464 6 8 6s-2.766-.27-3.682-.687C3.356 4.875 3 4.373 3 4c0-.374.356-.875 1.318-1.313ZM13 5.698V7c0 .374-.356.875-1.318 1.313C10.766 8.729 9.464 9 8 9s-2.766-.27-3.682-.687C3.356 7.875 3 7.373 3 7V5.698c.271.202.58.378.904.525C4.978 6.711 6.427 7 8 7s3.022-.289 4.096-.777A4.92 4.92 0 0 0 13 5.698ZM14 4c0-1.007-.875-1.755-1.904-2.223C11.022 1.289 9.573 1 8 1s-3.022.289-4.096.777C2.875 2.245 2 2.993 2 4v9c0 1.007.875 1.755 1.904 2.223C4.978 15.71 6.427 16 8 16s3.022-.289 4.096-.777C13.125 14.755 14 14.007 14 13V4Zm-1 4.698V10c0 .374-.356.875-1.318 1.313C10.766 11.729 9.464 12 8 12s-2.766-.27-3.682-.687C3.356 10.875 3 10.373 3 10V8.698c.271.202.58.378.904.525C4.978 9.71 6.427 10 8 10s3.022-.289 4.096-.777A4.92 4.92 0 0 0 13 8.698Zm0 3V13c0 .374-.356.875-1.318 1.313C10.766 14.729 9.464 15 8 15s-2.766-.27-3.682-.687C3.356 13.875 3 13.373 3 13v-1.302c.271.202.58.378.904.525C4.978 12.71 6.427 13 8 13s3.022-.289 4.096-.777c.324-.147.633-.323.904-.525Z"/> </symbol> <symbol id="bi-diagram-3" viewBox="0 0 16 16"> <path fill-rule="evenodd" d="M6 3.5A1.5 1.5 0 0 1 7.5 2h1A1.5 1.5 0 0 1 10 3.5v1A1.5 1.5 0 0 1 8.5 6v1H14a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-1 0V8h-5v.5a.5.5 0 0 1-1 0V8h-5v.5a.5.5 0 0 1-1 0v-1A.5.5 0 0 1 2 7h5.5V6A1.5 1.5 0 0 1 6 4.5v-1zM8.5 5a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1zM0 11.5A1.5 1.5 0 0 1 1.5 10h1A1.5 1.5 0 0 1 4 11.5v1A1.5 1.5 0 0 1 2.5 14h-1A1.5 1.5 0 0 1 0 12.5v-1zm1.5-.5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1zm4.5.5A1.5 1.5 0 0 1 7.5 10h1a1.5 1.5 0 0 1 1.5 1.5v1A1.5 1.5 0 0 1 8.5 14h-1A1.5 1.5 0 0 1 6 12.5v-1zm1.5-.5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1zm4.5.5a1.5 1.5 0 0 1 1.5-1.5h1a1.5 1.5 0 0 1 1.5 1.5v1a1.5 1.5 0 0 1-1.5 1.5h-1a1.5 1.5 0 0 1-1.5-1.5v-1zm1.5-.5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1z"/> </symbol> <symbol id="bi-columns" viewBox="0 0 16 16"> <path d="M0 2a1 1 0 0 1 1-1h14a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H1a1 1 0 0 1-1-1V2zm8.5 0v8H15V2H8.5zm0 9v3H15v-3H8.5zm-1-9H1v3h6.5V2zM1 14h6.5V6H1v8z"/> </symbol> <symbol id="bi-bar-chart-line" viewBox="0 0 16 16"> <path d="M11 2a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v12h.5a.5.5 0 0 1 0 1H.5a.5.5 0 0 1 0-1H1v-3a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v3h1V7a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v7h1V2zm1 12h2V2h-2v12zm-3 0V7H7v7h2zm-5 0v-3H2v3h2z"/> </symbol> <symbol id="bi-bi-hdd-rack" viewBox="0 0 16 16"> <path d="M4.5 5a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1zM3 4.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0zm2 7a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0zm-2.5.5a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1z"/> <path d="M2 2a2 2 0 0 0-2 2v1a2 2 0 0 0 2 2h1v2H2a2 2 0 0 0-2 2v1a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-1a2 2 0 0 0-2-2h-1V7h1a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2H2zm13 2v1a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1zm0 7v1a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1zm-3-4v2H4V7h8z"/> </symbol> <symbol id="bi-person-workspace" viewBox="0 0 16 16"> <path d="M4 16s-1 0-1-1 1-4 5-4 5 3 5 4-1 1-1 1H4Zm4-5.95a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5Z"/> <path d="M2 1a2 2 0 0 0-2 2v9.5A1.5 1.5 0 0 0 1.5 14h.653a5.373 5.373 0 0 1 1.066-2H1V3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v9h-2.219c.554.654.89 1.373 1.066 2h.653a1.5 1.5 0 0 0 1.5-1.5V3a2 2 0 0 0-2-2H2Z"/> </symbol> <symbol id="bi-book" viewBox="0 0 16 16"> <path d="M1 2.828c.885-.37 2.154-.769 3.388-.893 1.33-.134 2.458.063 3.112.752v9.746c-.935-.53-2.12-.603-3.213-.493-1.18.12-2.37.461-3.287.811V2.828zm7.5-.141c.654-.689 1.782-.886 3.112-.752 1.234.124 2.503.523 3.388.893v9.923c-.918-.35-2.107-.692-3.287-.81-1.094-.111-2.278-.039-3.213.492V2.687zM8 1.783C7.015.936 5.587.81 4.287.94c-1.514.153-3.042.672-3.994 1.105A.5.5 0 0 0 0 2.5v11a.5.5 0 0 0 .707.455c.882-.4 2.303-.881 3.68-1.02 1.409-.142 2.59.087 3.223.877a.5.5 0 0 0 .78 0c.633-.79 1.814-1.019 3.222-.877 1.378.139 2.8.62 3.681 1.02A.5.5 0 0 0 16 13.5v-11a.5.5 0 0 0-.293-.455c-.952-.433-2.48-.952-3.994-1.105C10.413.809 8.985.936 8 1.783z"/> </symbol> <symbol id="bi-award" viewBox="0 0 16 16"> <path d="M9.669.864 8 0 6.331.864l-1.858.282-.842 1.68-1.337 1.32L2.6 6l-.306 1.854 1.337 1.32.842 1.68 1.858.282L8 12l1.669-.864 1.858-.282.842-1.68 1.337-1.32L13.4 6l.306-1.854-1.337-1.32-.842-1.68L9.669.864zm1.196 1.193.684 1.365 1.086 1.072L12.387 6l.248 1.506-1.086 1.072-.684 1.365-1.51.229L8 10.874l-1.355-.702-1.51-.229-.684-1.365-1.086-1.072L3.614 6l-.25-1.506 1.087-1.072.684-1.365 1.51-.229L8 1.126l1.356.702 1.509.229z"/> <path d="M4 11.794V16l4-1 4 1v-4.206l-2.018.306L8 13.126 6.018 12.1 4 11.794z"/> </symbol> <symbol id="bi-chevron-down" viewBox="0 0 16 16"> <path fill-rule="evenodd" d="M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z"/> </symbol> </svg> <p class="taglist"> <svg class="bi"><use xlink:href="#bi-cloud"/></svg><a href="/cloud/">クラウド</a><br> <a href="/cloud/aws/">AWS</a> / <a href="/cloud/microsoft-azure/">Azure</a> / <a href="/cloud/google-cloud/">Google Cloud</a><br> <a href="/cloud/cloud-native/">クラウドネイティブ</a> / <a href="/cloud/serverless/">サーバレス</a><br> <a href="/cloud/cloud-share/">クラウドのシェア</a> / <a href="/cloud/cloud-failure/">クラウドの障害</a><br> </p> <p class="taglist"><svg class="bi"> <use xlink:href="#bi-box-seam"/></svg><a href="/container-vm/">コンテナ型仮想化</a> </p> <p class="taglist"> <svg class="bi"><use xlink:href="#bi-terminal"/></svg><a href="/programming-lang/">プログラミング言語</a><br> <a href="/programming-lang/javascript/">JavaScript</a> / <a href="/programming-lang/java/">Java</a> / <a href="/programming-lang/net/">.NET</a><br> <a href="/programming-lang/webassembly/">WebAssembly</a> / <a href="/programming-lang/web-standards/">Web標準</a><br> <a href="/devtools/">開発ツール</a> / <a href="/devtools/software-test/">テスト・品質</a> </p> <p class="taglist"> <svg class="bi"><use xlink:href="#bi-people"/></svg><a href="/devops/agile/">アジャイル開発</a> / <a href="/devops/scrum/">スクラム</a> / <a href="/devops/">DevOps</a> </p> <p class="taglist"> <svg class="bi"><use xlink:href="#bi-database"/></svg><a href="/database/">データベース</a> / <a href="/database/machine-learning-ai">機械学習・AI</a><br> <a href="/database/rdb/">RDB</a> / <a href="/database/nosql/">NoSQL</a><br> </p> <p class="taglist"> <svg class="bi"><use xlink:href="#bi-diagram-3"/></svg><a href="/network/">ネットワーク</a> / <a href="/network/security">セキュリティ</a><br> <a href="/network/http/">HTTP</a> / <a href="/network/quic/">QUIC</a> </p> <p class="taglist"> <svg class="bi"><use xlink:href="#bi-columns"/></svg><a href="/os">OS</a> / <a href="/os/windows">Windows</a> / <a href="/os/linux">Linux</a> / <a href="/os/vm">仮想化</a><br> <a href="/hardware/server/">サーバ</a> / <a href="/hardware/storage/">ストレージ</a> / <a href="/hardware/">ハードウェア</a> </p> <p class="taglist"> <svg class="bi"><use xlink:href="#bi-person-workspace"/></svg><a href="/trends/payment/">ITエンジニアの給与・年収</a> / <a href="/trends/workstyle/">働き方</a> </p> <p class="taglist"> <svg class="bi"> <use xlink:href="#bi-award"/> </svg><a href="/after-words/recommend/">殿堂入り</a> / <a href="/after-words/funny">おもしろ</a> / <a href="/after-words/">編集後記</a> </p> <p class="taglist"><svg class="bi"> <use xlink:href="#bi-book"/> </svg><a href="/tags.html">全てのタグを見る</a> </p> </div> <div class="bloggerinchief subcol"> <h4>Blogger in Chief</h4> <img src="https://www.publickey1.jp/images/profile.jpg" width="75" height="69" alt="photo of jniino" style="float:right"/> <p>Junichi Niino(jniino)<br /> IT系の雑誌編集者、オンラインメディア発行人を経て独立。2009年にPublickeyを開始しました。<br /> (<a href="/about-us.html">詳しいプロフィール</a>)</p> <p>Publickeyの新着情報をチェックしませんか?<br /> Twitterで :<a href="https://twitter.com/publickey/"> @Publickey</a><br /> Facebookで :<a href="https://www.facebook.com/publickey/"> Publickeyのページ</a><br /> RSSリーダーで : <a href="https://www.publickey1.jp/atom.xml">Feed</a><br /></p> </div> <div class="ranking subcol"><aside id="ranklet4-zwTpoj1qFRtK1F67ZUK4"></aside></div> <div class="newarticles10 subcol"> <h4>最新記事10本</h4> <ul><li><a href="https://www.publickey1.jp/blog/25/aisecurity_copilot.html">マイクロソフト、AIエージェントがセキュリティ対応を自動化。Security Copilotエージェント群を発表</a></li><li><a href="https://www.publickey1.jp/blog/25/_iaaspaas20262028.html"> IaaS/PaaSが成長を牽引する国内データセンターサービス。データセンターの新設は2026年から2028年頃にピーク。富士キメラ総研</a></li><li><a href="https://www.publickey1.jp/blog/25/figmaaiwebboltnewfigma.html">Figmaで作ったデザインが自動的に生成AIでWebアプリに。「Bolt.new」がFigmaインポートに対応</a></li><li><a href="https://www.publickey1.jp/blog/25/eclipsegithub_copilotcode_completion_in_github_copilot_for_eclipse.html">Eclipseに対応したGitHub Copilot「Code completion in GitHub Copilot for Eclipse」が正式版に</a></li><li><a href="https://www.publickey1.jp/blog/25/armampere_computing.html">ソフトバンクグループ、クラウド向けArmプロセッサ開発の「Ampere Computing」を子会社化</a></li><li><a href="https://www.publickey1.jp/blog/25/6kubeconcloudnativecon_japan_2025.html">6月東京開催の「KubeCon+CloudNativeCon Japan 2025」、セッション予定表が公開。基調講演にサイバーエージェント青山氏など</a></li><li><a href="https://www.publickey1.jp/blog/25/javaone_2025ceo_700.html">JavaOne 2025開幕、基調講演のゲストに元サンCEO スコット・マクネリ氏が登場。今は牧場で700頭の牛を飼っていると</a></li><li><a href="https://www.publickey1.jp/blog/25/java_24hotspot_jvm32windows.html">Java 24正式リリース。HotSpot JVMやガベージコレクタの改善による性能向上、32ビット版Windowsが削除など</a></li><li><a href="https://www.publickey1.jp/blog/25/google_cloud_spannerssdhdd.html">大規模分散データベースGoogle Cloud Spannerに階層型ストレージが導入、コールドデータをSSDからHDDに自動移行</a></li><li><a href="https://www.publickey1.jp/blog/25/post_304.html">スラド、受け入れ先募集が打ち切りとなりサービス終了を発表</a></li></ul> </div><br> </div><!-- end of container --> <script> function $(e) { return document.querySelector(e); } if (window.parent.screen.width < 728) { $('.category').before($('.ranking'),$('.newarticles10')); $('#relarticles').before($('.rectangle2')); } else { if ($('.rectangle1')) {$('.bloggerinchief').before($('.rectangle1'))}; $('.ranking').before($('.rectangle2'));} </script> <style> .rectangle1 {display:block} .rectangle2 {display:block} </style> <div id="footer"> <div class="footer_inner" > <img class="feedicon" src="https://www.publickey1.jp/images/feed-icon-28x28.png" width="28" height="28" alt="feed" style="float:left"; /> <div class="feeds" style="float:left; padding-left:20px; width:180px"> <a href="https://www.publickey1.jp/atom.xml">Feed / RSS</a><br /> <a href="https://twitter.com/publickey/">X/Twitter</a><br /> <a href="https://www.facebook.com/publickey/">Facebook</a><br /> </div> <div class="aboutus" style="float:left"> About us <ul> <li><a href="/about-us.html">Publickeyについて/運営者について</a></li> <li><a href="/about-us.html">お問い合わせ</a></li> <li><a href="https://www.publickey1.jp/adinfo/publickey-ad.html">広告について</a></li> <li><a href="https://www.publickey1.jp/privacy.html">プライバシーポリシー</a></li> <li><a href="https://www.publickey1.jp/blog/24/publickey_5.html">読者が安心して記事を読めるようにするための取り組みについて</a></li> </ul> </div> <div class="clearfix"></div> </div><!--end of footer_inner--> </div><!-- end of footer --> <!-- Ranklet --> <script async defer src="https://free.ranklet4.com/widgets/zwTpoj1qFRtK1F67ZUK4.js"></script> <!-- はてなブックマーク --> <script async defer src="https://b.st-hatena.com/js/bookmark_button.js" charset="utf-8" async="async"></script> <!-- 関連記事用JavaScript by jniino--> <script async defer src="/relarticles.js"></script> <!-- Google Programmable Search --> <script> // Get the modal var modal = document.getElementById("search-modal"); // Get the button that opens the modal var btn = document.getElementById("pblsc"); // Get the <span> element that closes the modal var span = document.getElementsByClassName("close")[0]; // When the user clicks the button, open the modal btn.onclick = function() { modal.style.display = "block"; var cx = '013552350871967056070:oszcdh3s4mm'; var gcse = document.createElement('script'); gcse.type = 'text/javascript'; gcse.async = true; gcse.src = 'https://cse.google.com/cse.js?cx=' + cx; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(gcse, s); }; // When the user clicks on <span> (x), close the modal span.onclick = function() { modal.style.display = "none"; }; // When the user clicks anywhere outside of the modal, close it window.onclick = function(event) { if (event.target == modal) { modal.style.display = "none"; } }; </script> <!-- Simple Analytics 100% privacy-first analytics --> <script async defer src="https://scripts.simpleanalyticscdn.com/latest.js"></script> <noscript><img src="https://queue.simpleanalyticscdn.com/noscript.gif" alt="" referrerpolicy="no-referrer-when-downgrade" /></noscript> <script> // 関数を配列で定義 const functions = [ function funcA() { sa_event("Ad1"); }, function funcB() { sa_event("Ad2"); }, function funcC() { sa_event("Ad3"); }, ]; // ランダムに関数を呼び出す const randomIndex = Math.floor(Math.random() * functions.length); functions[randomIndex](); </script> <!- script for simple analytics events --> <script> (function () { function saLoadedLinkEvents() { document .querySelectorAll('a[data-sa-link-event]') .forEach(function (element) { var href = element.getAttribute('href'); var eventName = element.getAttribute('data-sa-link-event'); if (!href || !window.sa_event || !window.sa_loaded) return; element.addEventListener('click', function (event) { var target = element.getAttribute('target'); if (target === '_blank') { event.preventDefault(); window.sa_event(eventName, function () { window.location.href = href; }); } else { window.sa_event(eventName); } }); }); } if (document.readyState === 'ready' || document.readyState === 'complete') { saLoadedLinkEvents(); } else { document.addEventListener('readystatechange', function (event) { if (event.target.readyState === 'complete') saLoadedLinkEvents(); }); } })(); </script> <!-- Global site tag (gtag.js) - Google Analytics --> <script async src="https://www.googletagmanager.com/gtag/js?id=UA-104739-7"></script> <script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'UA-104739-7'); </script> </body> </html>