2019/6/25に行われたJavaコミュ@福岡での登壇資料です
何度か教えていただいているので、今度こそしっかり覚えておきたくて、まきさんからのコメントを記録。 ## メモリサイズの考え方 SpringBootのアプリをコンテナとして動かす場合には768MB以上必要で、1GBくらいは割り当てる必要があるのではないかという僕のコメントに対していただいたコメント。 それは不正確..Tomcatを使う場合は最大コネクション(スレッド)がデフォルト200で+50スレッドくらい余裕を見ると250M (-Xss1M)でデフォルトのReservervedCodeCacheSize 240MとDirectMemorySize 10M加えた上にMaxMetaSpaceSizeがざっくり50Mくらい足すと550Mくらい使ってこれHeapを足すとコンテナサイズ— Toshiaki Maki (@making) November 16, 2019 その前提であればHeap 2
自分は、仕事でScalaを数年間・プライベートな経験を含めると10年弱のScalaの経験がある、そこそこの熟練Scalaエンジニアだ。チームにメンバーが入ってきたり他人に勧めるたびにScalaの環境構築を教えている一方、最新の知見を反映した記事が無くて他人に勧めづらかったので、自分が書くことにした。 現在ある記事 けっこう古びている 覚えながら書かれていることが多いのでやや曖昧な箇所がある(でもありがとう!) 最新のツールが利用できておらず無駄が多い 網羅的でない 今回目指す内容 最新の知見を活用して最短距離を目指す 何もない状況から一通りのツールが揃う所を目指す Scalaの環境構築は年を追うごとに簡単になってきているので、大多数の読者は引っかからずに進めるようになっているはず。 Scalaは基本的にJVMで動作する言語だ。このため環境構築にはJVMのセットアップも含まれるのだが、それに
アジア最大級の国際Scalaカンファレンスである「ScalaMatsuri2020」がオンラインで開催されました。そこでTreasure DataのTaro L. Saito 氏がScalaに関するいろいろなテクノロジーを紹介しました。まずは、バックエンドとフロントエンドの両方で使えるScalaについて。 趣味はオープンソースのプロジェクトを作ること Taro L. Saito氏:「Scala For Everything」というタイトルで発表します。簡単な自己紹介を。Treasure DataのSaitoといいます。Principal Software Engineerをしていて、今、カリフォルニア、アメリカの西海岸から発表しています。タイムゾーンの都合上、今こちらは夜の20時なんですけれども、ScalaMatsuriの運営の麻植さんが、タイムゾーンに配慮してくださったので、非常に感謝し
scalakb20190523.md 2019/05 Scala導入を検討したい人に向けた情報をまとめてみた Scalaとは? The Scala Programming Language 開発元はLightbend 社 と EPFL(Odersky先生がいるスイスの大学) 2019/05 現在、最新バージョンは 2.12 Dottyと呼ばれる新しいScalaコンパイラが開発されている Scala3 2019/05 現在0.15.0-RC1 2系との互換性はなく、移行ツールが用意される いつ出るのかもまだよくわからないため、おそらくこちらがメインストリームになるのはまだ数年先であると言われているが・・・? 特徴 JVM言語 オブジェクト指向と関数型言語両方の特性を併せ持つ 個人的にScalaの好きなところ 環境構築が簡単 JDKとsbt(ビルドツール)さえあればいい Scalaのコンパイラ
こんにちは、SSTでWeb脆弱性診断用のツール(スキャンツール)開発をしている坂本(Twitter, GitHub)です。 先日DeNA様がGitHub上で公開された PacketProxy を触ってみました。 https://github.com/DeNA/PacketProxy ここがすごい PacketProxyすごい!! 名前の通り、パケットレベルで中身を見たり、編集するのに向いてる。 javaソースで約4万8千行とそれなりの規模。 フレームワークやライブラリはあまり使わず、HTTP/WebSocketのパースなどを手作りしてる。 ソケット周りも Java8 時代のJDKライブラリベースで、Nettyみたいなフレームワークは使ってない。でも手作りでここまで作れるのはすごい。 DNS偽装 + invisible https proxy でスマホの通信を intercept できるよう
こんにちは、プラットフォーム事業部 DXユニットの高橋(@yukey1031)です。 先日開催されたOPTiM TECH NIGHT|Webアプリケーション/APIサーバフレームワークを語るLT大会で 「WebFluxでリアクティブなWebAPIのデモ」といった話をさせて頂きましたが、続けてこの記事ではSpring Boot2.2でサポートされたRSocketについてサンプルを交えつつ触れてみたいと思います。 optim.connpass.com マイクロサービスな現場でのAPI開発 以前の記事でも触れているようにオプティムが提供するAI・IoTプラットフォーム Cloud IoT OSは、マイクロサービスアーキテクチャで構成されており、周辺エコシステムの開発においてもマイクロサービスが前提となります。 マイクロサービスの連携には一般的にWebAPIが利用され、RESTful API、Gr
SVS403 : Best practices for AWS Lambda and Java はじめに この記事はSVS403 Best practices for AWS Lambda and Javaのセッションレポートです。 スライドと動画はそれぞれ下記で公開されています。 スライド 動画 セッション概要 In this session, we follow a customer’s journey as they optimize an AWS Lambda function written in Java to meet their cold start time requirements. We start from a simple yet slow PoC and walk through all of the changes, tricks, and trade-off
こんにちは。エムスリーエンジニアリンググループでScalaとマミさんが好きな安江です。今回は私が所属している製薬企業向けプラットフォームチームのPlay製プロダクトのPlay/Scalaバージョンアップのお話です。当初Play2.8にバージョンアップしていたのですが、その最中にPlay2.9/Play3.0やScala LTSが出たりもしました。最終的にPlay3.0/Scala3.3にバージョンアップできて本番稼働できたサービスもあるので、そのバージョンアップの経緯をご紹介します。 Play2.8への道のり Play3.0へのバージョンアップ ハマり1:依存ライブラリがPlay2系に依存している ハマり2:ScalikeJDBCの依存関係 ハマり3:サーバーバックエンドの変更 ハマり4:sttpのバックエンドの変更 ハマり5:if式が値を返さない まとめ We are hiring !!
Netpoll is a high-performance non-blocking I/O networking framework, which focused on RPC scenarios, developed by ByteDance. RPC is usually heavy on processing logic and therefore cannot handle I/O serially. But Go's standard library net is designed for blocking I/O APIs, so that the RPC framework can only follow the One Conn One Goroutine design. It will waste a lot of cost for context switching,
Don’t you love to crank code? As developers, we love to refactor; we love to be productive. As managers, how can we let the coding cowboys on our team be free, while maintaining code quality? At Twitter, we’ve been experimenting with feature testing. There are at least seven teams doing some form of feature testing of their services. Some of these teams have even discarded most of their single cla
最近Scala.jsの話をすると結構な人がRTしてくれる。TypeScriptの他にAltJSには今どんなのがあるのかな、という話に引用RTでScala.js今アツいですよという話をしたら結構ウケた。世間的にはTypeScript alternativeに興味がある人も多いようだ。一方、ネットに残っているScala.js情報は数年前のものが多いようで、あまり積極的に日本語での情報発信がなされていない様子。そこで、ここ最近Scala.jsはどういう感じなのか、そしてどうすれば始められるのかという情報をまとめると需要があるかもしれないと思い、書くことにした。 Scala.jsは数年前まではオモチャみたいな感じだったんですが最近はTSのライブラリから自動で型が生える仕組みがあったりめちゃバンドル小さくなったりとめちゃくちゃ進化してます!! https://t.co/c06IZGWhYF— Win
JVMLSに来ています。2日目。 JVM Language Summit — July 29–31, 2019 初日はこちら JVM Language Summit 2019(JVMLS) day 1 - きしだのHatena 今日はほぼ1日を通してコンパイラの話でした。 ちなみに、普通はJavaの文脈でコンパイラというとJavaソースコードをJavaバイトコードに変換するツールを指すと思いますが、このイベントではJavaバイトコードをネイティブコードに変換する仕組みを指します。 軽いまとめにしようと思ったけど、今日のWorkshopは結構おもしろかったのだけど資料も動画もなく、記憶だけが頼りなので、いまのうちにちゃんと書いておきます。 JIT and AOT in the JVM JITとAOTの話。 このセッションはすごく面白かったので、ひとつ動画を見るならこれをおすすめします。 朝ご
EngineeringSecuritymTLS: When certificate authentication is done wrongIn this post, we'll deep dive into some interesting attacks on mTLS authentication. We'll have a look at implementation vulnerabilities and how developers can make their mTLS systems vulnerable to user impersonation, privilege escalation, and information leakages. Although X.509 certificates have been here for a while, they have
こんにちは、SSTでWeb脆弱性診断用のツール(スキャンツール)開発をしている坂本(Twitter, GitHub)です。 普段は診断向けのスキャンツールを開発していますが、今年(2019年)の3月~8月にかけて、SST内部で使用する独自ローカルHTTPプロキシ「spindle-localproxy」を開発しました。 本記事(Part2)では公開しても差し支えない範囲で技術的な内容を紹介します。 開発の経緯や簡単な機能説明については、 Part1 を参照してください。 (以下、特に断りがない場合は「ローカルHTTPプロキシ」を「HTTPプロキシ」と表記します。) Part2. 技術的な内容紹介 今回開発したHTTPプロキシは、診断サービスの事前調査における画面遷移図作成をサポートする社内ツールになります。 Part2 では技術選定や要件で考慮したポイント、HTTPプロキシの実装とWebSo
自分は仕事で電話機のカメラアプリ開発を手伝っている。 なのでカメラアプリから見るとどうかを中心に議論してみたい。 電話機の CPU はどのくらい使われているのか 電話機の CPU, 最近だと 8 コアくらいある。こいつらを活用したい。 わけだけれど、まず現実にはどのくらい活用されているのか実例を眺めてみる。 ちょっと前に自分のブログで Perfetto というトレーシングツール (プロファイラだと思ってください)を紹介した。 その中で実際にいくつかのアプリのトレースを集めた。手頃な実例になっている。 アプリの起動 このデータ をダウンロードして、ui.perfetto.dev から開いてほしい。 以下画面写真: このトレースは Pixel 2 という電話機の上で TikTok というアプリの起動直後 5 秒間をキャプチャしている。 細かいところはわからなくていいけど、“CPU 0” から
すごく重要な予定が色々と決まりつつあるので、独断で勝手に?雑に?選んで紹介しておきます。 単なる翻訳というよりは、自分の感想や主観みたいなものが入ってます。 詳細な原文を知りたい人は、以下のあたりを読んでください https://github.com/playframework/playframework/blob/80da98b0352e1d3e7e1ba034ec9c5e4c15e1cb3e/documentation/manual/General.md https://github.com/playframework/playframework/blob/80da98b0352e1d3e7e1ba034ec9c5e4c15e1cb3e/documentation/manual/releases/release29/migration29/Migration29.md https://
最近久々に近所のお祭りに行ってきました、屋台の食べ物ではりんご飴が好きな菅野です。 皆さん、普段APIのテストはどのように行っておりますか? 最近は、APIのテスト自動化を行えるようなツールやサービスも増えてきているように思いますが、当社では、OSSのテスティングフレームワークである「Karate」を用いることが多いです。 比較的簡単な構文で直感的にAPIのテストができる点がよいと思います。 しかし、いかに簡単な方法でAPIのテストが記述できるからといっても、APIの数が多いとテストを作成するのは一苦労です。 今回は、そんなKarateのテストスクリプトをChatGPTを活用して作成してみようと思います。 まず、REST-APIの仕様を定義する場合、OpenAPIを利用することが多いのではないか、と思います。 ChatGPTの開発元である「OpenAI」ではないです。自分も書いていて、紛ら
The Play Team is thrilled to announce the release of Play 3.0.0! 🎉 This release brings highly anticipated new features, including support for the latest Java LTS versions and Scala 3. It continues our commitment to making Play more modular, flexible, and secure. Play 3.0, together with Play 2.9, represents a significant milestone as they are the first major releases in almost four years and the f
The main takeaway from this post should be an appreciation for the tools and techniques that can help you to profile and improve the performance of your systems. Should you expect to get 5x performance gains from your webapp by cargo-culting these configuration changes? Probably not. Many of these specific optimizations won't really benefit you unless you are already serving more than 50k req/s to
タイトルがあれですみません。同時実行性能を求められる要件があり、Web MVC と WebFlux のパフォーマンスを比較しました。WebFlux は Web MVC と同じように Vue.js や Thymeleaf などを使用した画面や、REST API で使用でき、Reactor の継続渡しスタイル (CPS) と関数型プログラミングにより、非同期でノンブロッキングな処理を実現し、少ないスレッドでの並行処理と少ないハードウェアリソースでスケールが可能な Web スタックです。 結果 計測内容: 1 万リクエストし、全レスポンスが完了するまでの時間 結果評価: サーバ処理時間によらず、WebFlux のほうが 2 倍くらい速い (注意: 単発性能ではない。単発ではわずかに遅くなる可能性もある。) サーバ側 1 回の処理時間に 50 ミリ秒かかる場合で、WebFlux 1 万リクエスト全
Published 24 Jul 2020 By The Apache Arrow PMC (pmc) The Apache Arrow team is pleased to announce the 1.0.0 release. This covers over 3 months of development work and includes 810 resolved issues from 100 distinct contributors. See the Install Page to learn how to get the libraries for your platform. Despite a “1.0.0” version, this is the 18th major release of Apache Arrow and marks a transition to
今回のアプリケーションでは、RESTfulサービスを複数回コールする際の安全性と効率性に関する、ごく一般的な問題を取り上げています。記事では"Where's Waldo(ウォーリーを探せ)"のテキスト版 — "Waldo"を見つけるまで、名前のチェーンを追いかける処理を開発します。 ここにHttp4kを使って記述した、完全なRESTfulサービスがあります。Http4kは、Marius Eriksen氏の有名な論文で述べられている関数サーバアーキテクチャのKotlin版で、Kotlin以外にもScala(Http4s)やJava 8以降(Http4j)など、さまざまな言語で実装されています。 今回のサービスには、Mapによって名前のチェーンを実装した単一のエンドポイントがあり、名前を与えることで、マッチした値とステータスコード200か、あるいはエラーメッセージと404のいずれかが返されます
Blog? Why do people use words containing 'log' so often? The initial title for this article was "Why the Apache model sucks". It would have been a catchier title but would taint my arguments with triviality. But it was the first title that came to my mind and you should be aware of that. I have written about Apache in the past past and the present post is a rehash with a slightly different emphasi
2019年3月19日、Data Engineering Meetupが主催するイベント「Data Engineering Meetup #1」が開催されました。データの収集や管理、処理、可視化など、データエンジニアリングに関する技術の情報を共有する本イベント。データエンジニアリングの最前線で活躍するエンジニアたちが集い、自身の知見を共有します。プレゼンテーション「Deep Dive into Spark SQL with Advanced Performance Tuning」に登壇したのは、Databricks Inc.の上新卓也氏。講演資料はこちら Optimizer 上新卓也氏:これでLogical Planにキャッシュを使うプランが含まれてきたので、その次の処理としてはOptimizerですね。 これは今までプランの書き換えなどはやってこなかったんですが、ここからプランをガシガシと
This web framework, "Minum", provides an all-in-one minimalist foundation for a highly-maintainable single-binary web application. For TDD, by TDD. Has its own web server, endpoint routing, logging, templating engine, html parser, assertions framework, and database Around 100% test coverage that runs in 30 seconds without any special setup (make test_coverage) Nearly 100% mutation test strength us
はじめに プログラミングモデルの変遷 ソケット ソケットによるサーバ実装 スレッドプールを利用したサーバ実装 ブロッキングI/Oの課題 ノンブロッキングI/O I/O多重化(multiplexing) バッファ操作 I/O多重化を使ったサーバ実装 非同期チャネル NIO2 によるエコーサーバ まとめ はじめに Java でネットワークプログラミングを行うのであれば Netty を使えば良いのですが、Netty に至るまでの標準APIの変遷についての話題は知っておいて損はない内容だと思います。 いまさら書く必要のある内容では無いかもしれませんが、とりまとまった情報源も乏しいため、Java標準APIを利用したネットワークプログラミングについて説明していきます。 プログラミングモデルの変遷 Java でネットワークプログラミングを行うには、JDK1.4 以前では Socket を使ったシンプ
サーバサイドKotlinといえばSpring Bootを採用することが多いと思います。 個人的にはSpring Bootは、Auto Configurationのブラックボックス感が辛くて、もっとシンプルなフレームワークに乗り換えたいという思いが常々ありました。 JetBrains社製のWebフレームワークであるKtorが、2018年11月にv1.0.0がリリースされ、2020年4月現在v1.3.2まで順調にアップデートされ続けており、そろそろ本格的に利用しても良さそうな気配を感じています。 この記事では、Kotlin+KtorでREST APIの作成に必要な技術要素をStep By Stepで検証してみながら、クリーンアーキテクチャなAPIサーバを構築してみたいと思います。 最初の画面を表示 IntelliJでGradleプロジェクト作成 build.gradleにKtorのGradle
LINEのエンジニア組織が大切にしている3つのこと 良い開発文化を生み出すための仕組みと工夫 LINEのengineer culture #2/2 2019年12月8日、エンジニアの知的興味を満足させるエンジニアのための祭典「JULY TECH FESTA2019」が開催されました。今回のテーマは「Share! Your Engineering Culture!」。さまざまな業界で活躍するエンジニアたちが、自社の開発文化にまつわる知見を語ります。プレゼンテーション「LINEのEngineer Culture」に登壇したのは、LINE株式会社 上級執行役員 LINEファミリーサービス開発統括の池邉智洋氏。LINEが大切にしているエンジニア文化のこれまでとこれからについて語ります。後半パートとなる今回は、LINEが大切にしている3つのキーワード「Take Ownership」「Trust &
ビルド時アプローチの利点は明らかです。コンパイル中により多くの計算を行うことにより、フレームワークはその時点で最適な方法で実行できるように準備されます。また、リフレクション、動的なクラスローディング、プロキシの実行時生成を排除することで、実行フェーズにおけるさらなる最適化の機会が得られます。この最適化は、JITと、非常に重要な点として、GraalVMのNative Imageツールの両方に対して得られます。このアプローチのおかげで、Native Imageでは、Micronautフレームワークアプリケーションのクローズドワールド静的分析を実行するために追加で設定することはありません。 MicronautフレームワークとGraalVMの間のこの相乗効果を生み出すため、Micronautフレームワークの共同創設者であるGraeme Rocher氏がOracle Labsに加わりました。Orac
小学生におすすめのオンライン家庭教師は? オンライン家庭教師を使うデメリットは? 中学受験で失敗しないオンライン家庭教師の選び方って? こういった疑問に答えます。 オンライン家庭教師を検討中のママにとって、「小学生のうち子でも本当に成績アップするのか」が気になるのではないでしょうか?デメリットや注意点をしっかり理解した上で、オンライン家庭教師を選びたいですよね。 せっかく高い授業料を払ったのに、こどもがサボッたり、変な先生が担当になるのだけは絶対に避けたいところ。 そこで本記事では、中学受験を控えた小学生におすすめのオンライン家庭教師を徹底解説します。 この記事を読むことで、失敗するリスクをゼロに近づけるだけではなく、あなたのお子さんが「この先生なら、楽しそう^^」とモチベーションがぐんと高まる先生と出会えるでしょう。 中学受験に効果あり!オンライン家庭教師とは? オンライン家庭教師とは、
2021年11月10日と11日の2日間、LINE株式会社が主催するエンジニア向け技術カンファレンス「LINE DEVELOPER DAY 2021」がオンラインで開催されました。そこでLINE Communication Platform Engineeringに所属する大石氏が、「LINEのAndroidアプリがSPDYからHTTP/2へ移行した話」というテーマで、LINEアプリのネットワークスタックが抱えていた問題と、その解決方法について共有します。 セッションのアジェンダ 大石将邦氏:こんにちは。「LINEのAndroidアプリがSPDYからHTTP/2へ移行した話」について発表します、大石と言います。よろしくお願いします。 まず、このセッションのアジェンダをお伝えします。はじめに、LINEアプリのネットワークスタックが抱えていた問題点について話します。そして、その問題点を解決するた
こんにちは、SSTでWeb脆弱性診断用のツール(スキャンツール)開発をしている坂本(Twitter, GitHub)です。 5月のGW明けごろに、社内のエンジニア向けにJava開発のスキルアップサポートを行う機会がありました。 コロナの影響で在宅となったため、Google Meets を使ってリモートでJava開発についての細々としたノウハウを若手エンジニアに伝授しました。 「細かすぎたかな・・・」と不安になりましたが幸いにも好評だったので、ざっくりとした箇条書きになりますがこちらでも公開します。 対象読者 : 中級レベルにステップアップしたい Java ビギナー(Javaの入門書を1 – 2冊、環境構築も含めて写経したくらいを想定) なお一部には坂本個人の意見も混ざっています。参考程度にとどめ、もし所属するチームで定められたルールやレギュレーションがあったり、読者自身のこだわり/意見があ
はじめに これは Ubie Advent Calendar 2019 - Qiita の7日目の記事です。 6日目は かみな/Kaito Minatoya@Ubie (@kamina_zzz) | Twitter による 地球上の Kubernetes ユーザーは絶対使うべきツールたちを紹介するよ - Qiita でした。 想定読者 Spring + Kotlin + GraphQLを使っていて、Ktorに移行したくなっちゃった人 (需要🤔) 本題 UbieでAdvent CalendarをKtor縛りで書くぞ!となりました。じゃあ自分は何を書こうかなーって考えてたらGraphQLに決まってるじゃん?と振られたので、UbieではKtor+GraphQLは使ってないのですが、もしSpringのアプリケーションである https://github.com/ubie-inc/kotlin-gr
はじめにこんにちは。TIG DXチームの村瀬です。 AWS Glue利用していますか?ETL処理をする上で大変便利ですよね。しかしながら開発に必要不可欠な開発エンドポイントが少々お高く、もう少し安価に利用できればなーと思っていたところ、さすがAWSさん素敵なリリースをしてくれました。 https://aws.amazon.com/jp/about-aws/whats-new/2019/08/aws-glue-releases-binaries-of-glue-etl-libraries-for-glue-jobs/ AWS Glueとは過去のこちらの記事もご参考ください。 5TB/日 のデータをAWS Glueでさばくためにやったこと(概要編 5TB/日 のデータをAWS Glueでさばくためにやったこと(性能編) ローカルPCの環境を汚さない為に作業を開始する前に確認したところ、Glue
はじめに 今回はSpring5から追加されたSpring WebFluxについて簡単に説明します 今回のゴールはWebFluxの概念的なところを理解して、Hello Worldするところまでとします RequestParameterとかRequestBodyとかについては別記事でまとめます(多分...) 背景 1年くらい前からWebFluxの存在は知っていた(Spring Fest2018あたりで谷本さんの話は聞きました) ただ、必要に迫られることがなかったので特に勉強してなかった しかし、今回APIをWebFluxで実装することになり、ちゃんと勉強しようと思った次第です WebFluxとは? 2017年8月に一般リリースされたSpring5から追加された機能 Spring5の最大の特徴となっているのが、リアクティブ・プログラミング・モデル 非同期であり、ノンブロッキング型であること 少な
アプリケーション開発でマイクロサービス化を進めるなら、それに適したフレームワークが必要になる。オラクルではマイクロサービスの要件に合うフレームワークHelidonを提供しており、最新技術との親和性も高い。Oracle CloudやJavaを使うなら必見だ。日本オラクル 古手川忠久氏が解説する。 講演資料:クラウド・ネイティブ時代に最適なJavaベースのマイクロサービス・フレームワーク ~ Helidonの実力を見極めろ! 日本オラクル株式会社 クラウドソリューション推進本部長 古手川忠久氏 オラクルが開発するマイクロサービスを開発するためのフレームワーク「Helidon」 クラウドサービスプロバイダにはトップ3が君臨しているが、いまここにオラクルが猛追している。2月3日にはOracle Cloud大阪リージョン開設を発表し、日本では2つのリージョンを展開することになった。後発ゆえに、これま
Helidon SEの関数スタイルを、WebServerインターフェースを使ってHelidon Webサーバを起動するという、ごく単純な例を使って見ていきましょう。 WebServer.create( Routing.builder() .get("/greet", (req, res) -> res.send("Hello World!")) .build()) .start(); この例を出発点に、ダウンロード用サーバアプリケーションの一部として、本当のstartServer()メソッドを段階的に開発する中で、Helidon SEの3つのコアコンポーネントを探っていきたいと思います。 webサーバコンポーネント NodeJSや他のJavaフレームワークにヒントを得たHelidonのWebサーバコンポーネントは、Netty上で動作する非同期かつリアクティブなAPIです。WebServer
Spring WebFluxに関する、いまの理解を整理する。 Spring WebFlux 以前の問題点Tomcatは1リクエスト処理するのに1スレッドを割り当てる。リクエストが終わるまでスレッドは解放されないため、処理にブロッキングな部分があったとしてもスレッドを占有し続ける。 ネットワークI/O、外部サービス呼び出し、DBアクセスなどが典型的なブロッキング箇所で、例えば、低速なネットワークからのリクエストをひとたびreadすると、のんきにスレッドを占有してリクエストの到着を待つことになる。 このとき、同時に多くのリクエストを捌くためには多くのスレッドが必要になる。 Java ブロッキングとかノンブロッキングを理解したい - SIerだけど技術やりたいブログwww.kimullaa.com ただしスレッド生成には(少なくともスレッドごとに確保するスタック領域分の)メモリが必要。 参考:
Cover Photo by Alexander Shatov on Unsplash Netflix accounts for about 15% of the world's internet bandwidth traffic. Serving over 6 billion hours of content per month, globally, to nearly every country in the world. Building a robust, highly scalable, reliable, and efficient backend system is no small engineering feat but the ambitious team at Netflix has proven that problems exist to be solved.
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く