様々な制限をなくすことができるシステムを作りたい
私は、韓国より就活をしましたので、Zoomがなかったら、面接すら受けることができませんでした。
Zoomのように時間や場所などの制約をなくして、できなかったことをできるようにするシステムを実装するフルスタックエンジニアになりたいと思っております。
会社で最も大きな比重を占めていた自社サービスのUI/UXとシステムの流れをリニューアルすることですた。
レガシー コードを最新のフレームワークに置き換え、顧客アップロードファイルをイメージ処理し、優れた品質のFAX送信を可能にしました。
大変だったのは、15年前のレガシーコードを把握することとイメージプロセッシングのための変換式を直接実装したことでした。
この経験から、複雑に絡み合っているコードを読み把握する能力を身につけることができ、時にはコードを直接具現するよりは適切なライブラリーを検索し、システムに導入できることが重要だということに気づいたプロジェクトでした。
要件定義:リーダーとサポーターとの打ち合わせを通して要件を定義
基本設計:ウェブページの設計
詳細設計:DB設計をしERD作成、シーケンスダイアグラム作成
プログラミング:UI/UX設計や実装、15年前のレガシーコードをモダンなPHPコードに変更、JavasciprtのCanvas APIを利用してイメージ処理
進捗報告:社長、リーダー、サポーターの前で、プロトタイプを見せながら説明し、次の段階について意見を伺う
競争している他社は、Googleのキーワード広告の上位に検索されるために、どんなキーワードを使っているのかを把握するため、クローリングするプロジェクトでした。
クローリングは、Seleniumを利用しPythonのコードで作成し、フェブはPHPを利用しました。
難しかったことは、短い間に同じリクエストをしたら、IPが一時的に遮断される場合があり、データ収集が上手くできませんでした。
そのため、Cronの実行時間を弄りながら、安全な間隔を探してCronを設定しUser-Agentを実際のブラウザーのように設定して遮断されない確率をあけました。
要件定義:リーダーとのウェブ会議を通して、要件を把握
基本設計:ウェブページの設計
詳細設計:DB設計をしERD作成
プログラミング:Pythonのスクリプトを作成、PHPのLaravelを利用してウェブ制作
進捗報告:Backlogを利用して、リーダーに報告し2週間に一回ウェブ会議を通して、プロトタイプを見せながら報告
大きく3つの方法でAWSリソースのコストを削減し、リソースによっては最大42%までコスト削減が可能でした。
AWSのリソースの中、必要ないことを把握して停止すること
使わないけれど持っているだけでも費用が発生するEBSやスナップショットなどを削除する
オーバースパック
EBSは設定した容量を全部使わなくても、設定した容量の費用が請求されます。
例えば、最初に32GBを設定し、8GBだけ使用してない状態でも32GB分の費用が発生します。
EC2のセービングプラン
サーバに性向に応じて適切なプランを適用することで、EC2全体のコストの27%削減ができました。
オーバースパック把握:各EC2インスタンスを確認し、オーバースパックになっていることがあれば、容量を減らして、費用の無駄遣いがないように設定しました。
EC2の利用と費用把握:AWSカンファレンスに参加した際に得た知識を基に会社で使用していたEC2の種類と使用時間などを全てリストアップし、他の契約プランを適用した際にどの程度の節減が可能かをリストアップして報告しました。
【REST API】
自社サービスの機能をAPIとして、利用したいというお客の要望があり、API提供するプロジェクトでした。
既存のAPIはルールがなく、何のためのAPIなのか簡単に把握できない問題を解決するためにRESTの規則を基づいて既存のAPIをやり直しました。
【SQLチューニング】
既存にページング機能があったが、ページを変更するたびに3秒程度の時間がかかる問題がありました。
実行計画を確認したら、インデックスを使っていなかったため、カバリングインデックスを使って3秒から0.2秒まで減らすことができました。
【REST API】
既存のAPIを把握:リクエストのエンドポイントやパラメーター、レスポンス把握
RESTFul API作成:RESTのアーキテクチァーを規則を守りながらAPI作成
【SQLチューニング】
クエリー実行時間をチェック:フレームワークのデバッグ利用
実行計画を確認:どんな構文で時間がかかっているのか把握
適切なインデックス適用:JOINやWHEREの条件により、適切なインデックスを使用