サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
Wikipedia
qiita.com/poly_soft
はじめに こんにちは。雑食系エンジニアの勝又です。 今回は、私が2年ほど参画させていただいた大規模サービスのインフラやDevOps周りを全面的にリプレイスしたお話について簡単にご紹介させていただきます。(内容に関しては事前に参画先企業様に確認していただいております) サービス概要 詳細な内容は伏せますが、メインとなるテーブルのレコード数が数十億件、スパイク時には数万〜数十万のユーザーが一斉にアクセスする大規模サービスです。 技術的負債 長く運用されてきたサービスのあるあるですが、新機能の追加が最優先されてきたことにより、こちらのサービスにも下記のような技術的負債が大量に積み上がっていました。 RubyやRailsやMySQLのバージョンがかなり古い インフラの構成がコードではなくドキュメントで管理されている アプリケーションの構成管理がおこなわれていない CI/CDパイプラインが構築されて
qiita.com
若い頃は誰でも「強いエンジニア」を目指すものだと思いますし、エンジニアとして強固な軸足を確立する上では、「技術競争」つまり「ストリートファイト」に邁進する期間は必要だと思います。 しかし「手を動かすエンジニア」には「ファイターとしての賞味期限」が必ず存在しますので、いつまでも「アンダーグラウンドの喧嘩自慢」として君臨することはできませんし、戦い続けることによる見返りは決して大きいものではありません。 エンジニアが、自分の投下する膨大な労力に対するリターンを最大化していきたいならば、どこかで上手に軌道修正していく必要があるわけですが、今回はそういった辺りに関する私の見解を簡単に述べてみたいと思います。 おまえ誰よ? 雑食系エンジニアです。本業では主にインフラとバックエンドおよびDevOps系の業務を担当しており、登録者数5万人超えのエンジニア系YouTuberでもあり、会員数2千名様超えの雑
ちなみに、IT業界全体のシェアとしてはMicrosoftのAzureの方がGCPを上回っていますが、Web業界においてIaaSにAzureを採用している企業さんは2019年時点ではまだまだ少ないので、現状ではとりあえずAzureへのキャッチアップは後回しにしておいて問題ないと思われます。 クラウドアーキテクチャ設計 前述したAWSやGCPの各種マネージドサービスを適切に組み合わせてアーキテクチャ設計を行い、それを構成図に落とし込める能力は必須となります。 いわゆる「アーキテクト」という職種の担当領域でもありますが、「サービスを安定稼働させたまま、バリューをユーザに迅速に届ける」ためには、自動化のしづらい構成が採用されてしまったり、無駄な機能が開発されてしまったり、アンマネージドなツールやサービスが使用されて管理工数が肥大化したりしないように、アーキテクチャ設計の段階からDevOpsエンジニ
「初学者向けの勉強会でマルチ商法の勧誘をされた」という体験談を耳にするケースがここ最近非常に増えましたが、どうやら「勉強会の参加者の方から」勧誘されるケースだけでなく、「勉強会そのものがマルチ商法の勧誘を目的として開催されているのでは?」という疑念を持たざるを得ないケースもあるようです。 先日、私のTwitterフォロワーの方から「ENGINEER STYLE TOKYOという勉強会の主催者と運営サイドの人たちはアムウェイの勧誘をしています」というご連絡がありまして、私の方で主催者の方および主催者の方の運営されている団体様に関して調べてみたところ、何らかの形でアムウェイと関わっていると疑わざる得ない情報をいくつか発見いたしました。 私が主催している「雑食系エンジニアサロン」内でも質問してみたところ、「勉強会主催者の方にカフェに誘われたので行きました。徐々にプログラミングとは無関係の話題にな
「実務未経験からWeb系エンジニアにジョブチェンジする方法」に関しては、最近かなり広く知見が共有されるようになってきましたが、「Web系エンジニアにジョブチェンジした後の転職戦略」に関してはまだまだ有用な情報が少ないという印象です。 学生時代からプログラミング経験があり、レベルの高い有名Web系企業さんに新卒で就職できた方たちは別として、キャリアの途中でWeb系エンジニアにジョブチェンジされた方たちが「エンジニアとして爆速で成長していく」「早い段階でガッツリ稼げるようになる」ためには、「適切なタイミングで適切な環境に移動する」ことが必須となります。 さらにその「移動頻度」に関しては、皆さんの考えている「数年ごとに転職」程度では大抵の場合「少なすぎ」であり、特に最初の会社に関しては「1年程度で辞めることが望ましい」というのが私の見解になります。 以下、最初の会社を1年程度で辞めた方がよい理由
先日、全ての開発者が学ぶべき5つの言語という翻訳記事を投稿させて頂いたのですが、「プログラミング力を伸ばす」という観点においては記事主の方のご意見に大きな異論はないものの、これからエンジニアを目指す初学者の方や経験の浅い方が「日本のWeb業界でキャリアを爆速で成長させるための最適な習得順序」としてはまた別の組み合わせが必要だと思いますので、この記事ではそれに関する私の考えを簡単に述べさせて頂きたいと思います。 (注:主にバックエンドエンジニアの方を対象としています) 結論 未経験から日本のWeb業界でキャリアを爆速で成長させるためにはRuby -> Go -> Scalaという順序が最適である。 以下その理由について説明します。 初学者の方がプログラミングスクール等を経由してWeb業界にエンジニアとして就職する場合に、言語選択において最も重視すべきポイントは下記の3点です。 求人数 日本語
@rana_kualuさんの 2018年の最先端フロントエンドエンジニアになろう 2018年の最先端バックエンドエンジニアになろう という翻訳記事のDevOps版という感じですが、HackerNoonに投稿されたThe 2018 DevOps RoadMapという記事が個人的に大変参考になりましたので、翻訳してみました。 ちなみに関連記事として 2018年の最先端バックエンドエンジニアに必要なスキルについて考えてみました。 という私の記事もございますので、併せてご参照頂けますと幸いです。 はじめに DevOpsは最近非常にホットなトピックで、私の友人や同僚、シニア開発者のほとんどは、DevOpsエンジニアになるために非常に熱心に取り組んでおり、組織やチームの中で「DevOpsのチャンピオン」として自分自身をセルフプロデュースしていいます。 私自身は、ソフトウェア開発とデプロイプロセスの改善
以前「転職ドラフトで1000万円超えのオファーを2度貰ったエンジニアが「評価された理由」と「正社員で働く意味」について考えてみました。」という記事を書いたのですが、転職ドラフトと同様な「年収確約型のエンジニアスカウトサービス」としてmoffersというものがあります。 転職ドラフトがここ最近非常に盛り上がっているのに対してmoffersはかなり知名度が低いのですが、現在開催中のmoffersで、転職ドラフトでも頂いたことのない「年収1200万円」という高額オファーを頂きましたので、若いエンジニアの方たち(特にバックエンド系の方たち)の今後のキャリアプランのご参考になればということで、moffersに登録している業務経歴をそのままのフォーマットで公開したいと思います。 ちなみにmoffersでは下記のような感じでオファーが届きます。(黒塗りですみません) 業務経歴1:【Kotlin/Vert
先日投稿したプログラミングが大好きなWeb系エンジニアの50代以降のキャリアに関する考察という記事は、かなり拡散して色々な方に読んで頂いたようなのですが、ネット上の反応を見る限り、フリーランスエンジニアというワークスタイルに良くも悪くも歪んだイメージを持ってしまっている方が多いというか、実体験を伴わない聞きかじりの情報に影響されて誤った認識を持ってしまっている方がかなり多いという印象でしたので、こちらの記事ではそういった誤解に対する私なりの反論というか見解を述べさせて頂こうと思います。 誤解1:案件や顧客は全て自分で探さなければならない 一昔前の、例えば「業務委託案件を探す手段が@SOHOくらいしか存在しなかった時代」は、案件を探すのは確かに大変でしたし、高単価案件は一部の「人脈の広い人」でないと中々見つけられない状況でした。 しかし、2010年辺りからWeb系エンジニアの需要が爆発的に拡
先日、サイバーエージェントさんの「身に着けた技術をいかに捨てられるか。エンジニア歴39年、今でもエンジニアで居続ける理由。」という記事が大変話題になりました。 プログラミングやテクノロジーが大好きでWeb業界で働いているエンジニアの方の多くは、「可能であれば50代以降も現場で"手を動かすエンジニア"として働きたい」と考えてらっしゃると思いますが、平松さんのような方はかなり例外的で、Web業界で多数の現場を経験してきた私でも、50代以上の現役エンジニアの方とご一緒にお仕事をさせて頂いた経験は残念ながら一度もありません。 私は現在、雑食系エンジニアTVというYoutubeチャンネルで、Web系エンジニアのキャリアに関する情報を色々と発信させて頂いているのですが、視聴者の方から「Web系エンジニアの50代以降のキャリア」に関してご質問頂いても、完全に未知の領域になる&ロールモデルとなる方があまり
@rana_kualuさんの2018年の最先端バックエンドエンジニアになろうという翻訳記事がとても興味深かったのですが、記事内で提示されているロードマップに関して微妙に違和感を感じる部分もありましたので、 記事に記載されているスキルは現場でどの程度必要なのか 記事に記載されていないが現場において重要なスキルは何か といった辺りを、自分なりの意見を交えてちょっと書き出してみました。 自分をエンジニアとして最先端だとは全く思っていないのですが、最近のバックエンドのトレンドに一応多少なりともきちんとキャッチアップしてるかなとは思うので、若い方や、まだ経験の短いエンジニアの方たちのご参考になりましたら幸いです。 言語 ロードマップに記載されていた言語のうち、私は一応 Elixir Scala Java .NET (C#とVB.NET) Python Ruby PHP TypeScript Gola
転職ドラフトで1000万円超えのオファーを2度貰ったエンジニアが「評価された理由」と「正社員で働く意味」について考えてみました。転職キャリア 【キャリア/転職ドラフト】正社員/契約社員エンジニアという働き方のメリット/デメリット - YouTube ここ数年はフリーランスエンジニアとして色々な企業様でお世話になっているのですが、「正社員は嫌だ」というわけではなく、また「自分の市場価値をシビアに知っておきたい」ということもあり、転職ドラフトには毎回参加させて頂いております。 転職ドラフトに関してご存知ない方はこちらとかこちらの記事が参考になると思われます。 ちなみに私は転職ドラフトや運営会社のリブセンスさんとは何の関係も無いのでステマとかではありません。 どんなオファーを貰ったのか 私の場合、年齢的に普通におじさんだということもありまして、オファーが0件の場合も多いのですが、有り難いことに今
昨年の丁度同じ時期に、1ヶ月ほど仕事を休んで小学校の算数から高校数学までを学び直しまして、文系エンジニアが機械学習に入門するために小学校の算数から高校数学までを一気に復習してみましたという記事を書きました。 その後、機械学習やディープラーニングに関する勉強をどんどん進めていく予定だったのですが、Go、Scala、DDD、関数型言語の基礎、Rust、そしてGCPやKubernetes等、仕事上でキャッチアップしなければならない分野が山積みだった(&とても面白かった)ため、中々手を付けられませんでした。 それらの学習がやっと一段落した&今年の7月から機械学習系の開発に強みを持つ会社様に職場が変わったということもありまして、機械学習の入門として非常に評判の良かったAndrew Ng先生のCourseraの機械学習コースを(今回は仕事を休まずに)受講してみましたので、振り返ってみたいと思います。
val interpMock = new (Command ~> Id) { def apply[A](a: Command[A]): A = a match { ... } } という構文が出てきまして、本題のFreeモナド以前に「この"~>"ってなんだ?(-_-;)」っていうところで躓いてしまったので、調べてみました。 ~>の定義
アドテク用語に関する個人的メモです。 前提 このまとめの内容は、下記書籍やリンク先記事からの抜粋、もしくは私個人が理解しやすいように文言を多少編集したものになります。 あくまで私個人のメモなので内容の正しさは保証されませんのでご注意ください。 引用書籍/記事 改訂2版 ネット広告ハンドブック アドテクノロジーの教科書 デジタルマーケティング実践指南 アドテクノロジー プロフェッショナル養成読本 ネット広告がわかる基本キーワード70 DSP/RTBオーディエンスターゲティング入門 頻出略語 CV Conversion(コンバージョン) 資料請求、会員登録、商品購入等の成果件数 CVR Conversion Rate コンバージョン率。一定期間内のページビューやユニークユーザー数に対するコンバージョン件数の割合。 CPA Cost Per Action Cost Per Acquisition
Ecto 2.0から導入されたEcto.Multiは、複数のタグ付けされたオペレーションを一つのトランザクション内で実行出来る機能です。 José Valimさんのこちらのアナウンスにおけるコードをそのままコピペさせて頂きますと、下記のようになります。 user_changeset = User.changeset(%User{}, params) log_changeset = Log.changeset(%Log{}, event: "user updated") multi = Ecto.Multi.new |> Ecto.Multi.update(:user, user_changeset) |> Ecto.Multi.insert(:log, log_changeset) |> Ecto.Multi.run(:charge_credit_card, fn changes_so_f
SEOをしっかり考慮したWebサービスを開発する場合、サイトマップの出力は必須になりますが、Rubyのsitemap_generatorのようなElixirの便利パッケージは現時点で存在しません。 パッケージを使わずにゴリゴリ書いて生成することも可能なのですが、他のプロジェクトでも共用することを考慮して、ここはパッケージを作ってしまいましょう。 考察1 まずはsitemap_generatorの動作を調査してみましょう。DSLは下記のようになっています。 SitemapGenerator::Sitemap.default_host = "http://www.example.com" SitemapGenerator::Sitemap.create(:include_root => false) do add '/', changefreq: 'daily', priority: 1.0
# ホームディレクトリに移動 cd # gitをインストール sudo yum install git # nvmをgitリポジトリからclone git clone git://github.com/creationix/nvm.git .nvm # .bash_profileを変更 vi ~/.bash_profile # 以下の設定を追加 source ~/.nvm/nvm.sh # 一旦ログアウトして再ログイン # インストール可能なnode.jsのバージョンの一覧を確認 nvm ls-remote # node.jsをインストール(LTSであるv4の最新版をインストールしておく) nvm install v4.3.1 # バージョンを確認 node -v # nvmのデフォルトバージョンを定義 nvm alias default v4.3.1 # erlangの依存パッケージをイ
備考 ecto_migrate ridgepoleと同様に、マイグレーションファイルを生成する必要がないのでその点は便利です。(自動的にALTER文を生成してくれる) フィールドの型(string等)を変更しないと、フィールドのサイズ変更が行えないようです。(ここがかなり不便) iexから実行する場合(EctoItを使用する場合)、MySQLではrootユーザのパスワードを空にしておく必要があります。 現時点の最新バージョン(0.6.3)がectoのバージョン1.0.xに依存しています(ectoの最新バージョンは1.1.3なので古いectoを使用する必要があります。ここもちょっと問題) 結論として、現時点ではectoの通常のmigrate機能を使用しておいた方が良いと思われます。 (2016/02/23追記) ectoの通常のmigrate機能を使う場合、スキーマ変更時にマイグレーションフ
このページを最初にブックマークしてみませんか?
『poly_soft - Qiita』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く