KINTOテクノロゞヌズのブログ - TECH PLAY

TECH PLAY

KINTOテクノロゞヌズ

KINTOテクノロゞヌズ の技術ブログ

å…š1113ä»¶

はじめに こんにちは。プラットフォヌムGのPlatformEngneeringチヌムでPlatformEngineeringの考え方をベヌスにツヌル呚りの開発・運甚・展開の圹割(ずチヌムリヌダヌのようなこずをしおいる) 島村 です。 この蚘事は、 KINTOテクノロゞヌズのAdventCalendar2023 の技術偎1日目の蚘事です。 CICDツヌルずしお、GitHubに付属しおいるGitHub Actions。 特にPushず手動(WorkFlow_dispatch)をよく䜿うず思いたすが、これが有効になったり動いたりするのはどういう時なのか、たたに混乱したせんか 私はしたす。メンバヌずどうだっけず話をしたこずもよくありたす。 なので敎理しようずいうのが本蚘事です。 背景 PushしたずきずかMergeしたずきずか手動ずか、起動するEventsのうち、 on.push on.workflow_dispatch の際の挙動を敎理しおたずめたいず思いたす。 テスト準備 ケヌス on.push default(main)ブランチにMergeしなくおも動くか default(main)ブランチにMergeしたあず、Pushのブランチを倉曎するずどうか Pushの際に他のブランチに圱響がないか on.workflow_dispatch deafult(main)ブランチにMergeしなくおも動くか Merge埌に別ブランチを䜜成しお修正、Pushしたら反映されるか 基本コヌド(echo.yaml) name: "TestWorkFlow" on: push: branches: - main - 'test/**' workflow_dispatch: jobs: TestWorkflow: name: "TestWorkFLow Echo" runs-on: ubuntu-latest steps: - name: Echo Branch run: | echo "Branch${{ GITHUB_REF_NAME }}" 結果たずめ 䞀枚っぺらのむラストにたずめたのがこちら。 詳现 on.push Mergeしなくおも、以䞋の条件にマッチするならPushしたタむミングで動く 構文などのミスがないこず(ただ、構文ミスがあったずしおもFailで衚瀺される) pushしたブランチずworkflowのon.pushのブランチの条件が合臎しおいる on.push.branchesをtest/**のたたで"feature/trigger-test"でブランチを切っおpushしおも動かない on.push.branchesを"feature/xx"に倉曎しおpushしたら、feature/trigger-testのWorkflowが動く 以䞋の぀のブランチがある堎合の挙動 on.push.branchesを"feature/xx"ずしおいるtest/trigger-test on.push.branchesを"test/xx"ずしおいるfeature/another-trigger 䜕か修正しおtrigger-testでPushしおも、feature/another-triggerのWorkFlowは動かない 䜕か修正しおfeature/another-triggerでPushしおも、trigger-testのWorkFlowは動かない on系パラメヌタはその発生したブランチにあるファむルの内容を芋お起動するかを刀断しおいる on.workflow_dispatch defaultブランチにファむルが存圚しないず、手動で動かすボタンは衚瀺されない Mergeした埌に新しくブランチを䜜成しおInputsを远加した 手動起動の堎合、ブランチを遞択できるので、新しいブランチを遞ぶずInputsが増える pushず同じで、ブランチにあるファむルの内容を反映しおいる 怜蚌 on.push default(main)ブランチにMergeしなくおも動くか たずは、echo.ymlを䜜成しおPushする。 junpei@:test-trigger-repo$ git add .github/ junpei@:test-trigger-repo$ git commit -m "create workflow" [test/trigger-test 43be511] create workflow 1 file changed, 17 insertions(+) create mode 100644 .github/workflows/echo.yml junpei@:test-trigger-repo$ git push origin test/trigger-test ・・・・・・ Total 5 (delta 0), reused 0 (delta 0), pack-reused 0 remote: remote: Create a pull request for 'test/trigger-test' on GitHub by visiting: remote: https://github.com/junpeishimamura-kinto/test-trigger-repo/pull/new/test/trigger-test remote: To https://github.com/junpeishimamura-kinto/test-trigger-repo.git * [new branch] test/trigger-test -> test/trigger-test junpei@:test-trigger-repo$ 想定だず動かないかなず思っおいたが、Actionが走る。 Mergeした埌にPushのブランチを倉曎するずどうか トリガヌ条件を「test/**」ずしたmainブランチから「feature/trigger-test」を䜜成しおも動かない圓然。 ワヌクフロヌのファむルを on: push: branches: - main - 'feature/**' workflow_dispatch: ず「feature/trigger-test」で修正しおPushしたら、もちろん動く。 他のブランチぞの圱響はないか mainブランチから、「test/trigger-test-other-branch」を䜜成しお、適圓なファむルを䜜成する junpei@:test-trigger-repo$ git status On branch test/trigger-test-other-branch Untracked files: (use "git add <file>..." to include in what will be committed) test-branch.txt nothing added to commit but untracked files present (use "git add" to track) junpei@:test-trigger-repo$ git add test-branch.txt junpei@:test-trigger-repo$ git commit -m "create test-branch.txt" git p[test/trigger-test-other-branch 0c738b1] create test-branch.txt 1 file changed, 1 insertion(+) create mode 100644 test-branch.txt junpei@:test-trigger-repo$ git push origin test/trigger-test-other-branch ・・・・ Total 3 (delta 0), reused 0 (delta 0), pack-reused 0 remote: remote: Create a pull request for 'test/trigger-test-other-branch' on GitHub by visiting: remote: https://github.com/junpeishimamura-kinto/test-trigger-repo/pull/new/test/trigger-test-other-branch remote: To https://github.com/junpeishimamura-kinto/test-trigger-repo.git * [new branch] test/trigger-test-other-branch -> test/trigger-test-other-branch junpei@:test-trigger-repo$ でPushしたら、もちろん動く。この堎合のワヌクフロヌファむルは、「test/trigger-test-other-branch」のものでMainではない。 远加で、mainブランチから「feature/another-trigger」を切る。この時、前に怜蚌しおいた「feature/trigger-test」ブランチは残しおいる。 junpei@:test-trigger-repo$ git switch -c feature/another-trigger Switched to a new branch 'feature/another-trigger' junpei@:test-trigger-repo$ git branch * feature/another-trigger feature/trigger-test main test/trigger-test test/trigger-test-other-branch junpei@:test-trigger-repo$ で、ファむルずかを䜜っお、「feature/another-trigger」のワヌクフロヌの条件は倉曎せず(test/**)でPushする。 Actionsは走らない。操䜜ブランチにあるワヌクフロヌの条件に合臎するかどうかが基準ずなっおいる暡様。 on.workflow_dispatch deafult(main)ブランチにMergeしなくおも動くか on.pushで䜜成したecho.ymlをMainブランチにマヌゞしなくおも手動できどうできるか workflow_dispatchがYamlにあったずしおも、Mainブランチにマヌゞしないずボタンが衚瀺されず動かせない。 ボタンがないので、指定するブランチを切り替えるずういうこずもできなさそう。 Merge埌に別ブランチを䜜成しお修正、Pushしたら反映されるか よく䜿うので、怜蚌したせんでした。が、反映されたす。 RunWorkflowのボタンを抌すず、ブランチ指定ができるので、遞ぶず、倉曎点などが反映されたものが動かせたす。 所感 on.pushにおける、「defaultブランチにMergeしなくおも動くか」以倖は想定通りでした。PushしただけではGitHub Actionsずしお登録されないMergeしお初めお登録されるず認識しおいたので、敎理しお認識が違っおいたのを把握できお良かったです。今回はBranch条件ずしたしたが、Tagもむベント駆動の皮別が同じなので、同様の挙動をするず思いたす。 本圓はCircle.CIずか他のCICDサヌビスずの比范もしたいず思っおいたのですが、倚分、同じ圢で動くのかなず思っおいたす。GitHub Actionsず違い、SaaSç³»CICDツヌルはむベント駆動で゜ヌスコヌドを匕っ匵っおくるので、むベントが発生したブランチにあるものを刀断するんじゃないかなず。 さいごに PlatformEngneeringチヌムは、瀟内向けの暪断ツヌルを統制しお必芁なものを開発しおいたす。 Platformグルヌプの他チヌムが䜜ったものを受け入れたり、必芁なものを新芏䜜成や既存のものをマむグレヌションしたりしおいたす。CDKにも手を出そうずしおるので、ManagedService以倖にもプログラミングも行い始めたした。 こういった掻動に少しでも興味を持ったり話を聞いおみたいず思った方は、お気軜にご連絡いただければず思いたす。 @ card
はじめに こんにちは、KINTOテクノロゞヌズの開発線成本郚に所属するカンです。2022幎1月に入瀟し、これたでサむト再構築ずいうプロゞェクトを進めおきたした。 KINTOをご利甚いただくお客様が増えるに぀れ、様々なサヌビスを拡充しようずしおおり、既存サむトでは迅速な機胜远加を行う䞊で様々な問題点を有しおいたため、これらの問題の解決ず改善のためのサむト再構築プロゞェクトが今幎 8月にリリヌスされたした。 本皿では、私が所属しおいるサむト再構築のフロントチヌムに぀いお玹介したいず思いたす。 サむト再構築FEチヌムの目暙 新芏開発をスピヌディヌに提䟛出来る環境の実珟を目指す 耇雑な環境構築から、シンプルな環境構築の実珟を目指す 耇雑に絡み合っおいるcss゜ヌス、js゜ヌスを定矩し盎す 䌚員管理機胜を䌚員情報プラットフォヌムぞ移譲する クリ゚むティブグルヌプず連携し、デザむンから実装に萜ずし蟌むUI/UXの改善提案も含む 再構築FEチヌムは、䞊蚘の項目を達成するためにプロゞェクトを進めたした。 開発段階で改善できる郚分に぀いお毎スプリントの䌚議で話し合い、効率的なプロゞェクトを構築するために他のチヌムず連携しお改善しおいきたした。 コヌドの再利甚性を高め、メンテナンスに容易な盎感的なコヌドを䜜成したした。 TypeScriptを䜿甚するこずで予期せぬ゚ラヌが発生するこずを防止し手軜なデバッグで䜜業生産性を高めたした。 どのような技術スペックをプロゞェクトに取り入れたのか プロゞェクトを進めながら悩んだもの 既存プロゞェクトの仕様を再構築するだけでなく、既存の機胜改善や新機胜远加、コヌドリファクタリングも同時に進めおいたため、各メンバヌ間で進行䞭の業務に察しお把握が難しい 連携するチヌム(BEチヌム、デザむンチヌム、むンフラチヌム、QAチヌムなど)ず仕様および開発に぀いお効率的なコミュニケヌションをずるための方法 良い開発環境を構築しおいくためにはどんな方法があるか メンテナンス性が高く再利甚性の高いコヌドを䜜成するためには プロゞェクトの仕様ず技術に察する各メンバヌ間の理解の差を解決し、コヌドの統䞀性を高めるための方法 解決するために FE チヌムは 開発を進めるにあたっお、レビュヌは重芁性が高いず認識しおいたためレビュヌに関するルヌルを䜜成したした。たた、毎日レビュヌ時間を䜜っおレビュヌを進行するように努力したした。 特定のレビュヌに察しお担圓者を指定せず、自由にいろんなPull Requestに察しおレビュヌする方法で進めたした。その結果、他のメンバヌが進んでいるタスクの仕様やコンポヌネントなどの実装に぀いお確認しながらお互いの業務内容を把握しやすくなりたした。 連携するチヌムずConfluenceぞ倉曎仕様のペヌゞを䜜っおコミュニケヌションし、たた業務のツヌルを利甚しお効率的なコミュニケヌションをずるこずができたした。 BEチヌムが提䟛するswaggerずAPIの倉曎仕様に぀いおたずめたConfluenceのペヌゞを通じおAPIの仕様を玠早く理解するこずができ、倉曎点も明確に確認しお察応するこずができたした。 クリ゚むティブチヌムずはAdobe XD、Figmaなどのデザむンツヌルを通じお協業したした。 導入するUI/UXに関しおよりわかりやすく理解するこずができ、ナヌザヌが理解しやすくお操䜜しやすい盎感的なコンポヌネントを䜜成するこずができたした。 コミュニケヌションも自由に取りながら協業し䞍明点や倉曎点があれば、その堎ですぐにハドルmtgを開催しお解決しおいきたした。この結果、開発過皋で発生しうるバグを枛らすこずができたした。 より良い開発環境を䜜るためにチヌム内の業務に関する様々なガむドラむンを䜜成したした。 Outlook、Slack、Confluenceなどでコミュニケヌションを取り、デむリヌ䌚議を通じお互いに珟圚進行䞭の業務に察する状況を理解するこずができたした。タスクを進行しながら悩むずころに぀いおはお互い盞談し、チヌム内で䞀緒に問題を解決しおいきたした。プランニングの䌚議で各メンバヌの進行状況を確認しながら次回のスプリントの䜜業分担を行い、過床な業務負荷がないようにしたした。 たた、スプリントごずに振り返り䌚議を進め、該圓スプリントの惜しかったずころや良かったずころず、改善しおいきたいずころに぀いおお互いに盞談しながらもっず良い開発環境を構築しおいきたした。 Atomic Designパタヌンを導入し、持続的なリペクトリングを通じおコヌド再利甚性を高めたした。 Atom/Molecules/Organismsの区分に察しおConfluenceのワヌクスペヌスに定矩をたずめ、䌚議を通じおメンバヌ間の認識を合わせおいきたした。 新しい機胜やUIの開発を進めながら、独立的でピュアなコンポヌネントを䜜成しおいきたした。 たた、コンポヌネントの品質を保蚌するためStorybookずReactのJestラむブラリを導入しおテストを行いたした。 その結果、より高い再利甚性を持぀コンポヌネントを䜜成するこずができたした。 Confluenceの再構築ワヌクスペヌスに既存プロゞェクトおよび新たに远加される機胜に぀いお仕様をたずめお共有したした。 たた、FE開発環境に関する参考資料を䜜成し、新芏参加者がより迅速に開発環境に適応できるようにしたした。レビュヌの流れやブランチ運甚方法、コヌドの䜜成方法などのコヌド管理に関するルヌルを蚭定し、統䞀性のあるコヌドを䜜成したした。 各メンバヌごずに順番を決め、珟圚䜿甚䞭の技術に぀いお茪読䌚をを開催しお知識を共有したした。 たずめ 今回のサむト再構築プロゞェクトを通じお良いプロゞェクトを進めるために重芁なものは䜕なのか改めお振り返るこずができたした。 個々人のプログラミングパフォヌマンスも重芁な芁玠だず思いたすが、䞀぀のチヌムずしお絶えず疎通しおいくのが重芁だず思いたした。 チヌム内でより良い開発環境を䜜るためにお互い努力し、柔軟な考え方で倱敗を恐れずに様々なトラむをするこずが重芁ではないかず感じたした。。 䜕でも詊したいこずがあれば、自由に発蚀しお詊しおみる明るい雰囲気の再構築チヌム環境で開発を進めるこずができたので、個人的にもチヌム的にも倚くの成長ができたず思いたす。 長期間のプロゞェクトを進めながら䞀緒に苊劎した再構築チヌムず連携したすべおのチヌムの努力のおかげで、プロゞェクトが今幎 8月に無事リリヌスするこずができたした。 最埌たで読んでくださっおありがずうございたす。
Introduction Hello. Ryo here, an ID Platform developer in the Global Development Group. KINTO services have already been rolled out in several countries, and we're planning to spread them to even further afield. Our mission in the ID Platform Development Team is to create an ID system that enables customers all over the world to use all of KINTO's services smoothly with a single ID, from any country. Today, I'd like to tell you about our FIDO proof of concept (PoC). Identity provider/ ID provider, or IDP An identity provider / ID provider (IdP or IDP for short) is a system entity that creates, maintains, and manages principal identity information, and provides authentication services for dependent applications in a federated or distributed network. A concept like the "identity provider / ID provider" above (IDP from here on) might be difficult to understand if you've never heard of it before, but to put it simply, it's a system that manages, authenticates, and authorizes users. Overview of FIDO Maybe you know what FIDO (Fast IDentity Online) is already, but in case you don't, it's a new authentication standard that — unlike the ordinary ID and password authentication methods— is all about doing password-free ID authentication for online services. It uses a key pair consisting of a private key and a public key, which is a more secure approach than the ordinary one based on sharing a common key. FIDO authentication procedure The procedure for registering is as follows: Login procedure for registered users Comparison with the ordinary way The ordinary way: ID and password pairs are set when users create accounts The IDs and encrypted passwords are recorded in a server-side database The server gets sent IDs and passwords, and is asked to decide if they're correct Pros of FIDO authentication FIDO authentication is a new password-free, secure authentication method that enables authentication to be done via public key cryptography instead of using passwords. It has the following advantages for users: The servers only store public keys, so they don't store users' private information. The public keys are encrypted, which makes it much safer than using common keys. The users can log in without having to remember a password. Fingerprint and face authentication are more convenient than manually entering passwords. What we have achieved Broadly speaking, we had the following 2 goals for our FIDO PoC: Achieving the necessary tuning and support in the current ID system Coming up with a plan that will enable us to easily adopt FIDO for both internal and external ID systems if desired. In line with these goals, we successfully achieved the following 4 things: Analyzing ECC and RSA public keys (Goal 1) Taking the public keys created using biometric authentication and storing them in the RDS (Goal 1) Being able to correctly authenticate users when needed (Goal 1) Being able to support both web- and API-based paradigms (Goal 2) Neat approaches we devised Covering both web- and API-based paradigms in the basic design stage Rather than simply creating an IDP, we also want to deploy it globally as KINTO's IDP, and get it used for other services as well. For KINTO's services, we're going for easy adoption of FIDO functionality with an API-based paradigm, and we're envisaging being able to adopt it for other companies' ones as well, using a web-based, one-click paradigm. If we can figure out neat ways to support both of these, it'll become more convenient. Changing the programming language The sample code we got from the official website is written in JavaScript for both the frontend and the backend. We're deploying services with Spring Boot, so if we want to add it to the IDP as a new feature, we'll need to change it from JavaScript to Java. If there's no Java library with the same functionality as the external JavaScript-based one, we'll need to do some coding in order to make the change. Issues we encountered during the PoC When authenticating a user, a bug sometimes arose where the public key didn't match the one stored in the RDS. On trying to debug it, we found that the public key IDs stored in RDS were encoded as base64, but the Java and JavaScript base64 encoding functions were giving different results. We'd run it in JavaScript with auto-padding off, but when we moved the backend logic to Java, the auto-padding setting didn't get picked up, and the Java auto-padding got used anyway. Turning off auto-padding fixed the bug. + Base64.getUrlEncoder().encodeToString(ID string) - For patterns using auto-padding, the part of the encoding result that's less than a multiple of 4 gets automatically padded with equals signs ("=") + Base64.getUrlEncoder().withoutPadding().encodeToString(ID string) - With auto-padding off, the encoding result gets left as is.    Problems FIDO has made it easier and more convenient for users to use online services securely, but there are still a few things that need to be taken care of. Public key management issue: Multiple public keys can be added on the same device ** The server can't tell whether the same device is being used, so you can register a public key the same device as many times as you like. This means garbage data gets stored in the RDS. ** Reregistering public keys by switching devices, etc. ** If you lose your device, get a new one, etc., you need to do the FIDO registration again. When you reregister, you need to verify your identity another way. This is less convenient than with ID-and-password authentication. ** Managing unwanted public keys ** The above will result in unwanted public keys. Users can't manage their public key IDs, so the backend can't tell whether public keys are valid when they become unwanted. Public keys still have to be stored on the RDS for a long time even if they become invalid. ** Summary We wanted to give users a better password-free experience with authentication, so we decided to do a PoC for FIDO. As a result, we feel that it's a powerful solution but there are still issues with things like public key management. So, we want to continue to develop things having soundly verified that they're suitable. References What is FIDO Authentication? What is OpenID Connect?
Introduction Hello. Ryo here, an ID Platform developer in the Global Development Group. KINTO services have already been rolled out in several countries, and we're planning to spread them to even further afield. Our mission in the ID Platform Development Team is to create an ID system that enables customers all over the world to use all of KINTO's services smoothly with a single ID, from any country. Today, I'd like to tell you about our FIDO proof of concept (PoC). Identity provider/ ID provider, or IDP An identity provider / ID provider (IdP or IDP for short) is a system entity that creates, maintains, and manages principal identity information, and provides authentication services for dependent applications in a federated or distributed network. A concept like the "identity provider / ID provider" above (IDP from here on) might be difficult to understand if you've never heard of it before, but to put it simply, it's a system that manages, authenticates, and authorizes users. Overview of FIDO Maybe you know what FIDO (Fast IDentity Online) is already, but in case you don't, it's a new authentication standard that — unlike the ordinary ID and password authentication methods— is all about doing password-free ID authentication for online services. It uses a key pair consisting of a private key and a public key, which is a more secure approach than the ordinary one based on sharing a common key. FIDO authentication procedure The procedure for registering is as follows: Login procedure for registered users Comparison with the ordinary way The ordinary way: ID and password pairs are set when users create accounts The IDs and encrypted passwords are recorded in a server-side database The server gets sent IDs and passwords, and is asked to decide if they're correct Pros of FIDO authentication FIDO authentication is a new password-free, secure authentication method that enables authentication to be done via public key cryptography instead of using passwords. It has the following advantages for users: The servers only store public keys, so they don't store users' private information. The public keys are encrypted, which makes it much safer than using common keys. The users can log in without having to remember a password. Fingerprint and face authentication are more convenient than manually entering passwords. What we have achieved Broadly speaking, we had the following 2 goals for our FIDO PoC: Achieving the necessary tuning and support in the current ID system Coming up with a plan that will enable us to easily adopt FIDO for both internal and external ID systems if desired. In line with these goals, we successfully achieved the following 4 things: Analyzing ECC and RSA public keys (Goal 1) Taking the public keys created using biometric authentication and storing them in the RDS (Goal 1) Being able to correctly authenticate users when needed (Goal 1) Being able to support both web- and API-based paradigms (Goal 2) Neat approaches we devised Covering both web- and API-based paradigms in the basic design stage Rather than simply creating an IDP, we also want to deploy it globally as KINTO's IDP, and get it used for other services as well. For KINTO's services, we're going for easy adoption of FIDO functionality with an API-based paradigm, and we're envisaging being able to adopt it for other companies' ones as well, using a web-based, one-click paradigm. If we can figure out neat ways to support both of these, it'll become more convenient. Changing the programming language The sample code we got from the official website is written in JavaScript for both the frontend and the backend. We're deploying services with Spring Boot, so if we want to add it to the IDP as a new feature, we'll need to change it from JavaScript to Java. If there's no Java library with the same functionality as the external JavaScript-based one, we'll need to do some coding in order to make the change. Issues we encountered during the PoC When authenticating a user, a bug sometimes arose where the public key didn't match the one stored in the RDS. On trying to debug it, we found that the public key IDs stored in RDS were encoded as base64, but the Java and JavaScript base64 encoding functions were giving different results. We'd run it in JavaScript with auto-padding off, but when we moved the backend logic to Java, the auto-padding setting didn't get picked up, and the Java auto-padding got used anyway. Turning off auto-padding fixed the bug. + Base64.getUrlEncoder().encodeToString(ID string) - For patterns using auto-padding, the part of the encoding result that's less than a multiple of 4 gets automatically padded with equals signs ("=") + Base64.getUrlEncoder().withoutPadding().encodeToString(ID string) - With auto-padding off, the encoding result gets left as is.    Problems FIDO has made it easier and more convenient for users to use online services securely, but there are still a few things that need to be taken care of. Public key management issue: Multiple public keys can be added on the same device The server can't tell whether the same device is being used, so you can register a public key the same device as many times as you like. This means garbage data gets stored in the RDS. Reregistering public keys by switching devices, etc. If you lose your device, get a new one, etc., you need to do the FIDO registration again. When you reregister, you need to verify your identity another way. This is less convenient than with ID-and-password authentication. Managing unwanted public keys The above will result in unwanted public keys. Users can't manage their public key IDs, so the backend can't tell whether public keys are valid when they become unwanted. Public keys still have to be stored on the RDS for a long time even if they become invalid. Summary We wanted to give users a better password-free experience with authentication, so we decided to do a PoC for FIDO. As a result, we feel that it's a powerful solution but there are still issues with things like public key management. So, we want to continue to develop things having soundly verified that they're suitable. References What is FIDO Authentication? What is OpenID Connect?
自己玹介 KINTOテクノロゞヌズでモビリティマヌケットの開発・運甚を担圓しおいるリナです。 普段はフロント゚ンゞニアずしお、䞻にNext.jsを甚いお実装しおいたす。 最近のマむブヌムは、Minecraftです🎮今曎始めたした。 さお、KINTOテクノロゞヌズは今幎もアドベントカレンダヌを実斜したす🎄 今回の蚘事では、昚幎よりアップグレヌドしたKINTOテクノロゞヌズ Advent Calendar2023を先んじおご玹介したす これたでのAdvent Calendar KINTOテクノロゞヌズは2021幎よりアドベントカレンダヌを実斜しおおり、今幎で3回目です🎄 2021幎のアドベントカレンダヌは、ただKINTOテクノロゞヌズのテックブログがなく、有志のメンバヌが集たっおQiita Advent Calendarを執筆しおいたした。 https://qiita.com/advent-calendar/2021/kinto-technologies 次に2022幎は、7月にKINTOテクノロゞヌズのテックブログをロヌンチし、正匏にアドベントカレンダヌをスタヌトできた幎です👏 蚘事の内容は「個人が習埗した技術の発信」ず「各郚眲グルヌプ玹介」2぀のテヌマで、KINTOテクノロゞヌズの瀟員が持぀技術や瀟員の働き方を䞭心に発信したした。 https://blog.kinto-technologies.com/posts/2022-12-01-advent_calendar/ 参考 Advent Calendarずは  Advent Calendar 2023 そしお今幎のアドベントカレンダヌは、䟋幎ず同様にシリヌズを2本立お公開したす 前幎は2぀のアドベントカレンダヌを䜜成しおいたしたが、今幎は1぀のカレンダヌで2シリヌズ・蚈50蚘事を公開予定です。 https://qiita.com/advent-calendar/2023/kinto-technologies-tech そしおなんず プレれント䌁画 も実斜したす🎅✚ みなさた、ご友人や同僚をお誘いあわせの䞊ご参加くださいたせ https://qiita.com/advent-calendar/2023/kinto-technlogies それでは、2023幎の蚘事のテヌマをご玹介いたしたす 1. 技術蚘事 KINTOテクノロゞヌズの瀟員個々人が習埗したスキル・技術を発信したす。 むンフラ・バック゚ンド・モバむル・組織開発など、倚岐にわたる分野の技術蚘事を公開予定です。 蚘事を通しお、KINTOテクノロゞヌズで働く瀟員が日々どのように課題解決やスキル習埗に励んでいるか、業務に取り組む姿勢を知るこずができたす 2. 蚘事リレヌ 今幎は、5぀のテヌマで蚘事リレヌをしたす テヌマは、今幎ロヌンチした倧芏暡プロゞェクトや瀟内の勉匷䌚で話題のトピックなどを遞定したした。 ①新車のサブスク サむトリニュヌアル 2023幎8月に新車のサブスクサむト(KINTO ONE)の完党リニュヌアルをロヌンチしたした🎉 開発期間玄2幎半の倧芏暡プロゞェクトです。 サむトリニュヌアルによっお新機胜の远加や改修がしやすく、よりモダンなサむトを構築できたした。 今回はプロゞェクトに携わったメンバヌが、よりよいサむトを構築するために行った改善や技術スタックを蚘事にたずめたす ②アゞャむル開発 匊瀟では、゜フトりェア開発手法であるアゞャむル開発を耇数のプロゞェクトおよびプロダクト開発で取り入れおいたす。 以前からアゞャむル開発の勉匷䌚は行われおいたしたが、郚眲単䜍などクロヌズドな環境での情報共有が䞻だったため、今幎から「 組織暪断 でアゞャむルな掻動を掚進するこず」に力を入れおいたす。 #help-agile-scrum ずいうアゞャむル開発の情報亀換ができるSlackチャンネルを䜜成したり、他チヌムのスプリント芋孊䌚を実斜するなど、組織暪断で気軜に情報亀換ができる状態を目指しおいたす。 今回は、各プロダクトで取り組んでいるアゞャむルの事䟋や工倫をご玹介したす ③KINTO FACTORY KINTO FACTORY ずは、すでに賌入されたトペタ・レクサス車に、その埌の技術革新や経幎劣化に合わせお゜フトりェア・ハヌドりェアの機胜やアむテムをタむムリヌに反映するこずで、お乗りのクルマを最新の状態に「進化」させるサヌビスです。 KINTO FACTORYではマスタデヌタをトペタやトペタの販売店各瀟から取埗し、トペタの関連各瀟ず適切なデヌタ構造を䞀緒に考えながら実装を進めおいるのが特城です。 ECサむト受付郚品発泚玍品たで、バックオフィスの運甚党䜓を䞀郚を垣間芋るこずができる蚘事も予定されおいたす。 他にも先日リリヌスされた車怜蚌の分割QRコヌド読み取り機胜など、ナヌザヌ様にずっお䜿いやすいサむトを目指しお日々「進化」に取り組んでいる様子もフロント゚ンドの技術を䞭心に公開予定。 他にも運甚䜓制の構築や新機胜远加など、いく぀かの蚘事を執筆したす ④QA KINTOテクノロゞヌズが提䟛する各皮サヌビスのリリヌス前怜蚌を担うグルヌプの蚘事連茉です。 トペタグルヌプに属するKINTOテクノロゞヌズでは、゜フトりェア開発においおも高い品質管理基準が芁求されたす。 たた、KINTO ONEやKINTO FACTORYなどの各プロダクト間ではデヌタ連携が行われおおり、耇数プロダクトにたたがった怜蚌も品質管理で重芁なポむントずなっおいたす。 各プロダクトの開発メンバヌは、自身が担圓するプロダクトの範囲内でテストを実行しおいたす。 しかし、QAグルヌプではプロダクト単䜓の怜蚌だけでなく、プロダクト間の怜蚌も担い、プロダクトプロゞェクト党䜓のコミュニケヌションのハブずしお情報収集・連携も行う重芁なグルヌプです。 そんなKINTOテクノロゞヌズには欠かせないQAグルヌプが、提䟛するプロダクトの怜蚌を進める䞊での開発チヌムずのコミュニケヌションや品質管理の重芁性に぀いお執筆いたしたす 参考 QAグルヌプ玹介  â‘€Diversity & Inclusion 匊瀟はさたざたな囜籍の倚様なバックグラりンドを持぀メンバヌが倚く、玄25%のメンバヌが倖囜籍です(2023幎11月時点) たた、幌い子どもを抱えながら働くワヌキングマザヌ・ファザヌが倚く圚籍しおおり、それに䌎い男性の育児䌑暇取埗者も増加しおいたす。 今回は、それぞれのラむフステヌゞ・ラむフスタむルに合わせおどのような働き方をしおいるのか、たた倚囜籍チヌムでどのようなマネゞメントを行っおいるのかなど、倖囜籍メンバヌのキャリアや働き方に焊点をあお、リヌダシップ・育児䌑暇・倚囜籍チヌムのコミュニケヌションのテヌマで執筆したす 参考 倖囜籍瀟員の掻躍  https://qiita.com/advent-calendar/2023/kinto-technologies-tech プレれントカレンダヌ そしお、今幎はQiita Advent Calendarのプレれント䌁画に参加したす 蚘事を投皿いただいた方の䞭から、3名様にプレれントをお枡しする予定です✚ テヌマは「 CCoEクリスマスクラりド技術を掻甚しお組織をカむれンした事䟋を投皿しよう 」です。 様々な掻動の䞭で、今回は「CCoE掻動」にフォヌカス 私たちは、AWS Summit Tokyo 2023・AWS Autotech Forum 2023をはじめずする倖郚むベントぞの登壇や、DBRE Summit 2023の開催など、トペタグルヌプ暪断でのCCoE掻動をリヌドしおいたす。 そこで、今回ぱンゞニアのみなさたから、クラりドに関わる「カむれン」事䟋を広く募集したす クルマ奜きの人もそうでない人も、日々の業務の䞭での小さな「カむれン」を教えおください。 プレれント内容🎁 KINTO Unlimited賞1名 Apple AirPods Max - スペヌスグレむ KINTO ONE賞1名 Anker PowerExpand Elite 12-in-1 Thunderbolt 4 Dock (APEX) ドッキングステヌション KINTO FACTORY賞1名 BenQ ScreenBar Halo モニタヌラむト スクリヌンバヌ ハロヌ USBラむト デスクラむト https://qiita.com/advent-calendar/2023/kinto-technlogies さいごに 今回は、2023幎のアドベントカレンダヌの抂芁をご玹介したした🎄 KINTOテクノロゞヌズのアドベントカレンダヌが、みなさたの新たな気づきに繋がれば幞いです。 たた、アドベントカレンダヌおよび登壇情報などの最新情報は X で配信したす ぜひ、フォロヌお願いいたしたす。 https://twitter.com/KintoTech_Dev それでは、2023幎のアドベントカレンダヌもご期埅ください✚
Introduction Hi. I'm Nishiguchi, the manager of the KINTO Technologies Analysis Group. Some of you might think it's strange that a tech company has an analysis group. So, that's what I'd like to talk about today. The Analysis Group's role KINTO Technologies' business includes the following: information processing services such as designing, developing, and operating sales and information systems in the digital field; and work related to creating and proposing plans for and providing consulting services for corporate management and marketing strategies. The Analysis Group handles the latter half of this, and of course, KINTO's business in Japan makes use of data from, cooperates with, and participates in the various services run by Toyota Financial Services Corporation group companies, and aims to use data in order to give business value. Giving data value (The scope of the Analysis Group) Are you familiar with the DIKW pyramid? This concept, which stands for data , information , knowledge , and wisdom, revolves around the idea of harnessing and processing vast amounts of information. At our core, we're committed to figuring out how to create value in business while transforming huge volumes of information into new systems. In order to make the DIKW pyramid a reality, we broadly divide our work into 4 areas. 1. Designing and carrying out data acquisition Business data typically consists of the following: transaction data generated from actions such as user order flows; and master data from things like product management. We also view both transaction and master data as having to be generated by something. It's been getting increasingly difficult to acquire data in recent years, notably due to calls to protect personal information. There are data that can only be acquired at certain times (user registration data, for example), and if you fail to get them at those times, you won't be able to later on. We of course set up the right analysis tags on websites, and also work on planning systems to generate data via user actions. 2. Data storage We need to be able to store the resulting data in a data lake or data warehouse quickly and accurately before moving on to the next step (analyzing it). The goal here is to make the analysts' job easier. We'd like to lower the workload that data acquisition and processing impose on analysts, so they can focus on the analysis work more. Not being able to find the data they're looking for easily can get interfere with their train of thought. It's important to create a system that, for example, will make it easy for team A to join forces with team B when they want to. I often tell our team members to put themselves in the receivers' shoes before they pass something on to them. 3. Data analysis Analyzing the data consists of splitting them up based on certain perspectives, and comparing them with other kinds. I think the idea is to find differences by doing so. I also see it as a policy of ours to promote widening or narrowing those differences. It's our job to find those differences from right perspectives, inform business team members about them, and also suggest appropriate actions to take. I tell our members that there are 2 skills they need. The first is to have various perspectives. Specifically, we get them to develop the ability to see things as insects, birds, fish, and bats do respectively. The other is performing "why-why analysis." In order to grasp the essence of things, we have to repeatedly ask why, and in so doing, find the root causes among the correct causal relationships. 4. AI and machine learning AI and machine learning are both a part of advanced data analysis. This is the domain of predicting the future using past data. In this field, we work with the Toyota Motor Mirai Creation Fund to create models using advanced algorithms while also gathering academic information. We're also constantly reviewing models for AI and machine learning in business fields. It's also essential that an MLOps environment be created that will make it easier to modify and implement these models, so we're also working on this together with the Platform Group Giving value to data (Roles and Responsibilities) To reiterate, acquiring data at the right time is critical to giving data value, especially in BtoC business. This is because some kinds of data can only be acquired at certain times. The next-most important point is to store the data so it's easy for people performing the next processes to use. To accomplish this, the Analysis Group has the following team member positions: 1. Data analysts Data analysts at KINTO Technologies are more than just analysts. This is because they're involved right from the data acquisition design stage, where the aim is to acquire data in the right places, at the right times, and in the right forms via websites and apps. They're also responsible for setting up the tags. We believe data analysts should think in advance about what kinds of data the analysis is likely to require, then acquire it without missing any out. The resulting data is then stored in a data lake or data warehouse. From there, the data can be freely extracted using BI tools and SQL, and predictors found, countermeasures proposed, and so on by finding the root causes for things while drilling down from the right perspectives. 2. Data engineers We also need highly skilled data engineers. We don't just store data from the backend database in a data warehouse as is, but also create data in ways that also aim to make things easier for members involved in data analysis. (I think this a unique approach only operating companies take.) KINTO is steadily launching new services, and our data engineers are also responsible for creating the development guidelines, common functions, CI/CD systems, and so on needed to develop things efficiently so that data analysis can start right from when the services are launched. 3. BI engineers It's crucial to turn data into information and quickly inform business members about the business situation. Also, managers and staff have different preferences when it comes to the level of detail they prefer in the information they access. A BI engineer's job is to develop, modify, and maintain dashboards for conveying it in the appropriate forms. 4. Data scientists A variety of services are going to be rolled out by KINTO, likely including more and more related to AI and machine learning. A wide range of support is going to be required for things like images as well as numerical data. No matter how accurate a model you construct, there's no guarantee that it'll actually get used in business. First, you need to convince the marketers, etc. that it's worth it. To that end, KINTO Technologies' data scientists need to be able to explain things using conventional statistical methods, etc., understand the businesses, and be interested in consumers. In other words, data scientists in KINTO's business play the role of marketing data scientists. 5. Analysis producers This is a new position that was created in September 2022. The analysis producers' job is to cross-functionally coordinate the roles of each of the positions 1 to 4 above. They require the business abilities needed to get people to tell them what business issues they're facing, then replace those issues with appropriate analytical problems. Of course, they also need to be highly experienced and knowledgeable about the data involved in 1 to 4. They'll also play an extremely important role in enabling the KINTO Technologies Analysis Group to make its presence felt even more in the future. Team dynamics and workflow approaches in the Analysis Group 1. Team members and atmosphere In the Analysis Group, we confront very difficult challenges daily, with each of our members bringing a unique set of experiences to the table. However, what we all have in common is our high level of motivation and curiosity toward further broadening our understanding of data-related domains, while staying true to each core roles as data analysts, data engineers, data scientists, etc. Whenever a new team member joins, we always take the time to introduce ourselves, as each and every one of us has extremely unique hobbies and things we're into. 2. How we work The Analysis Group is split between 3 locations: Tokyo, Nagoya, and Osaka. Each has teams consisting of data analysts, data engineers, BI engineers, data scientists, and analysis producers, and all the teams go about their work while deftly using online and offline approaches to freely consult with each other. Future challenges we want to tackle We'd like to take on the challenge of connecting and analyzing users across multiple KINTO services we're involved in, and other services besides. In order to do that, the functions and roles of the Analysis Group will need to be linked together organically. It's going to be very challenging, but we hope it'll give us an even deeper understanding of users. KINTO aims to be a top runner in the mobility platform world, and can use GPS and other mobility data to understand the "where" and financial data to understand the "how much." By recording the "who" and "when" in logs of these, we want to gain a deeper understanding of users' preferences and lifestyles. Then, the challenge will be to create systems, predictive models, and so on that will enable us to anticipate their behavior. In conclusion In the Analysis Group, we aim to stay updated with the latest information, and keep working diligently every day, so that we can make our presence felt by contributing to the development of new KINTO services and supporting Toyota Financial Services Corporation.
こんにちは 👋 KINTOテクノロゞヌズ、グロヌバルグルヌプ のRuoyang Wenです。* Global KINTO App * チヌムのフルスタック゚ンゞニアずしお勀務しおいたす。圓グロヌバルグルヌプに぀いおの詳现は こちら でご確認いただけたす 目的 スタヌトアップ䌁業ではよくあるこずですが、初期のプロダクトにはいく぀かの劥協点がありたす。ベネフィットを増やすためには、サヌビス改善の他に、ワヌクフロヌも改善する必芁がありたす。 本蚘事では、Git-flowからGithub-flowぞ倉曎した理由ずその方法をお䌝えしたす。 詊み トペタグルヌプの䌁業ずしお、圓瀟では日々の䜜業の䞭で日本語の「 カむれン改善 」ずいう蚀葉を䜿っお 改善 を実斜しおいたす。お客様からのフィヌドバックず分析デヌタによっお、さらに良いサヌビスを提䟛するためのカむれンはたくさんありたす。自動化により、 カむれン プロセスを加速させるこずが可胜です。 ゚ンゞニアにずっお、゜ヌスコヌドをコミットするこずは日々の業務であり、単に成果物を提出するだけでなく、サヌバヌ環境でコヌドをテストするこずも含みたす。我々は継続的むンテグレヌションず継続的デプロむCI/CDをチヌムに導入するこずで、反埩䜜業の削枛を図りたした。 CI/CDは、自動化を導入するこずにより、高頻床でアプリをリリヌスできる手法です。 ^1 我々はこれたで、Git-flowに埓っお、゜ヌスコヌドず開発の進捗を管理しおきたした。しかし、CI/CDを導入しおすぐに、䜜業プロセスがスピヌドアップしないこずに気が぀きたした。 掚論 git flow ダむアグラム CI/CDスクリプトを利甚したり、管理する䜜業は煩雑です。様々なブランチが倚くあるため、ブランチを䞀぀のカテゎリからもう䞀぀の他のカテゎリにマヌゞさせる際、別のスクリプトが必芁になりたす。_featureからdevelopぞ_、_developからreleaseぞ_、_releaseからmainぞ_、_hotfixからmainぞ_、_mainからdevelopぞ_、_developからfeatureぞ_等
 いたるずころにコンフリクトが生じたす。コンフリクトは自動化スクリプトでは解決できたせん。自動化により日々の䜜業量が増倧したした。なぜでしょうか。 リサヌチを実斜しお刀明したこず Git-flowは元来、手動か぀ラグのあるワヌクフロヌです。 そこで、新しいワヌクフロヌが必芁になりたす。 再詊行 先のリサヌチで芋぀けたいく぀かのワヌクフロヌの䞭で、私たちはもずもず゜ヌスコヌドをGitHubに保存しおいるこずもあり、GitHub-flowを詊しおみるこずにしたした。 github flow ダむアグラム 今回はブランチが二皮類のみです main ず 「change-of-anything」 。そしお main ぞ盎接コミットするこずをブロックしたす。 main をアップデヌトする唯䞀の方法は、 main に察しお プルリク゚スト を実斜するこずです。その結果、必芁なのは1぀のCI/CDスクリプトのみずなり、どんなコンフリクトも プルリク゚スト の䞭で発芋・解決するこずが可胜です。 新しい課題 我々はブランチ戊略を簡玠化し、CI/CDを実斜するスクリプトは1぀だけで、コンフリクトを管理するためにプルリク゚ストを利甚したした。これですべお解決でしょうか。プラス面もありたすが、マむナス面もありたす。 プラス面を芋おみたしょう。反埩䜜業を自動化スクリプトに移管したこずで、党員がより生産性の高い䜜業を行うこずができたす。リリヌスずデプロむのプロセスはスクリプトによっお凊理されるため、ロヌカルで加えた倉曎は2分以内にサヌバヌにデプロむできたす。 では、マむナス面を芋おみたしょう。システムの機胜/バヌゞョンの管理ができなくなりたした。機胜は各ブランチには保存されず、 プルリク゚スト 埌に盎接 main に保存されるため、次のバヌゞョンでどの機胜を保留し、どの機胜をリリヌスするかが決められたせん。たた、 main ブランチは最新の゜ヌスコヌドでアップデヌトされ続けるので、バヌゞョンの番号は1日で数癟も増加する可胜性がありたす。 ネクストステップ 幞いなこずに我々のみが盎面しおいる課題ではありたせん。すでにこれらの課題に盎面しおいる人々がおり、我々は圌らの歩みをたどり、圌らの解決策を芋るこずができたす。 フィヌチャヌトグルを䜿っお、い぀でも機胜を有効無効にできたす。パラメヌタの䞭に保存できるので、新芏のリリヌスデプロむは䞍芁です。異なる機胜の組み合わせを備えた異なるバヌゞョンをリリヌスするGit-flowよりも優れおいたす。 バヌゞョン番号は、特定のコミットを本番環境にデプロむした埌にのみ远加されたす。残りの環境には、バヌゞョン番号ずしおコミットハッシュを䜿甚したす。これは、そのコミットのバグや欠陥を即座に芋぀けるのに圹立ちたす。 たずめ 疑う䜙地もなく、すべおの問題を解決する完璧な゜リュヌションはありたせん。GitHub flowには欠点もあり、私はチヌムず䞀緒に我々のプロダクトだけではなく、䜜業方法に぀いおも カむれン するべく動いおいたす。 個人的には、Git-flowはりェブポヌタルのようなもので、定矩されたルヌルですべおを分類したす。誰もミスしなければ、問題なく動䜜したす。䞀方、GitHub-flowはサヌチ゚ンゞンのようなもので、本番環境にリリヌスデプロむするコミットにバヌゞョン番号をタグ付けし、他の環境ではコミットハッシュがバヌゞョン番号ずしお利甚されたす。そのため、䜕か問題があれば、怜玢でそれらのバヌゞョンを簡単に芋぀けるこずができたす。 参考 トペタ生産方匏 What is CI/CD? What is Continuous Integration? Git flow for agile teams is a no no Please stop recommending Git Flow! Git Flow vs GitHub Flow GitHub flow - GitHub Docs Continuous Integration Contradicts Features Branches! How to Achieve Continuous Deployment with Feature Flags
はじめに ホアンです。バック゚ンド゚ンゞニアずしお、Global KINTO IDプラットフォヌムGKIDPチヌムに所属し、ペヌロッパず南米を担圓しおいたす。チヌムはKINTOテクノロゞヌズKTCのグロヌバルグルヌプに属しおいたす。私たちは䞖界䞭のナヌザヌを認蚌するため、グロヌバルな課題に取り組んでいたす。GKIDPにずっお、速くお信頌性が高く、か぀可甚性の高いID管理、認蚌、認可システムIdentity and Access Management (IAM) システム は必芁䞍可欠です。この蚘事では、どんな皮類のクロスボヌダヌシステム䞊でも実行できるロヌドバランシングトラフィックルヌティングに぀いお、私の考えをシェアしたす。 HTTP (UDP, DNSも)はステヌトレス・プロトコルです。぀たり、クラむアントからサヌバヌぞの各リク゚ストにおいお、以前のリク゚スト情報を䞀切利甚できたせん。では、なぜステヌトレスでなければいけないのでしょうか目的は䜕なのでしょうか これには深い理由がありたす。ステヌトレス・プロトコルであれば、どんなリク゚ストが来おも各リク゚ストの状態を気にするこずなく、任意のりェブサヌバヌにルヌティングするこずができたす。その結果、スケヌルアヌキテクチャに合わせたロヌドバランシングが可胜になるのです。これにより、りェブサヌバヌをグロヌバルにペコテンできるようになり、システムレゞリ゚ンスの匷化ずパフォヌマンスの向䞊に繋がりたす。 この蚘事では、2皮類の䞻芁なロヌドバランシングに぀いお玹介したす。DNSルヌティングずハヌドりェアロヌドバランサヌ 別名ロヌドバランサヌです。これら2぀の方法は異なったものですが、組み合わせるこずで、KINTOの車䞡サブスクリプションサヌビスのようなグロヌバルシステムの匷化に利甚するこずができたす。 DNSルヌティング ナヌザヌがブラりザにURLを入力するず、ブラりザはDNSサヌバヌにDNSク゚リを送信しお、Webサむトのホスト名に察応するIPアドレスを取埗したす。ブラりザは、Webサむトのドメむンではなく、そのIPアドレスを䜿甚しおサヌバヌにアクセスしたす。以䞋がシンプルなフロヌです。 ![](/assets/blog/authors/pham.hoang/figure-2.png =600x) 図2.DNSルヌティング システムのサヌバヌが耇数の地域に分散しおいるこのようなケヌスでは、DNSサヌバヌは、クラむアントを最も適切なサヌバヌにルヌティングし、パフォヌマンスず可甚性を改善したす。DNSがリク゚ストの転送先を決定する方法を DNSルヌティングず呌びたす。 DNSルヌティングは、ナヌザヌのリク゚ストにタッチしないため、簡単な構成でありながらスケヌラビリティの高い方法です。倚くの堎合、デヌタセンタヌや地域間でナヌザヌをルヌティングするために䜿甚されたす。䞀般的なDNSルヌティング方法には、単玔なラりンドロビン方匏や、䜍眮情報ベヌス、レむテンシヌベヌス、ヘルスベヌスのようなダむナミック方匏がありたす。 DNSルヌティングには、叀いDNSキャッシュの問題ずいった欠点もありたす。DNSは、サヌバヌがダりンしおいる堎合でも、TTL生存期間経過前であれば、あるドメむンに察しお垞に同じIPアドレスを返したす。 混乱するかもしれないのでここで説明しおおきたす。DNSはトラフィックをルヌティングしたせん。DNSク゚リに察しお、IPアドレスを返すだけです。このIPアドレスでナヌザヌがトラフィックを送るべき堎所が分かりたす。図2における、ステップ3以降を説明したす。サヌバヌのIPアドレスを取埗埌、クラむアントは実際にトラフィックHTTPリク゚スト等をタヌゲットサヌバヌに送信したす。そうするずハヌドりェアロヌドバランサヌがその背埌にある耇数のバック゚ンドサヌバヌにトラフィックを分散しおくれたす。ハヌドりェアロヌドバランサヌに぀いおは次のパヌトで詳しく説明したす。 ハヌドりェアロヌドバランサヌ ドメむンに察応する倉換埌のIPアドレスを受信した埌、クラむアントはトラフィックをタヌゲットサヌバヌに送信したす。ここで、耇数あるバック゚ンドサヌバヌの前に蚭眮されたハヌドりェアロヌドバランサヌが起動し、これらのりェブサヌバヌにトラフィックを分散させたす。実は、ハヌドりェアロヌドバランサヌはリバヌスプロキシ、぀たりシステムのコヌディネヌタヌずしおの圹割を果たす物理的なデバむスにすぎたせん。 ![](/assets/blog/authors/pham.hoang/figure-3.png =600x) 図3.リバヌスプロキシずしおのロヌドバランサヌ ハヌドりェアロヌドバランシングには、レむダヌ4ロヌドバランシングずレむダヌ7ロヌドバランシングの2皮類があり、それぞれOSIモデルで蚀うずころのトランスポヌトレむダヌずアプリケヌションレむダヌで動䜜したす。OSIモデルを簡単に説明するず、リク゚ストはマトリョヌシカのように7぀のレむダヌに集玄されたす。より深いレむダヌ レむダヌ1からレむダヌ7たでのデヌタであるほど、より倚くの情報を埗るこずができたす。぀たり、レむダヌ7ロヌドバランサヌは、レむダヌ4ロヌドバランサヌず比范しお、受信リク゚ストに関し、より倚くの情報を持っおいるずいうこずです。 OSIモデル各レむダヌのデヌタは以䞋のようになっおいたす。 ![](/assets/blog/authors/pham.hoang/figure-4.png =600x) 図4.OSIモデル各レむダヌのデヌタ レむダヌ4ずレむダヌ7のロヌドバランサヌは、受信リク゚ストぞの干枉の皋床が異なりたす。 レむダヌ4ロヌドバランサヌ レむダヌ4ロヌドバランサヌは受信リク゚ストに関する情報をほずんど認識せず、クラむアントのIPアドレスずポヌトのみを認識したす。デヌタは暗号化されおいるので、ロヌドバランサヌはリク゚ストデヌタの内容に぀いお䜕も理解できたせん。そのため、レむダヌ4ロヌドバランシングは、レむダヌ7ロヌドバランシングほどスマヌトではありたせん。 メリット シンプルなロヌドバランシング デヌタの解読ルックアップが䞍芁 => 迅速、効率的、安党 デメリット ロヌドバランシングの方法が少ない スマヌトなロヌドバランシングができない キャッシュなしデヌタにアクセスできないので。 レむダヌ7ロヌドバランシング レむダヌ7ロヌドバランサヌは受信リク゚ストに関する読み取り可胜なデヌタ HTTPリク゚ストヘッダヌ、URL、Cookie等 に実際にアクセスできたす。レむダヌ7ロヌドバランサヌは、レむダヌ4ロヌドバランサヌよりもはるかにスマヌトにトラフィックを分散できたす。たずえば、非垞に䟿利な戊略ずしおパスベヌスのルヌティングがありたす。 メリット スマヌトなロヌドバランシング キャッシュあり デメリット 途䞭でデヌタを解読するTLSタヌミネヌション=> ロヌドバランサヌはデヌタを確認するこずになるので、速床が萜ち、安党性が䜎䞋。 ルヌティングロヌドバランシング方法のリスト ルヌティングロヌドバランシング方法は目的に応じお耇数ありたす。 ラりンドロビンアルゎリズム実装する最も簡単な方法サヌバヌアドレスが、ランダムたたは順番に返されたす。 加重ベヌスアルゎリズム各サヌバヌに送信されるリク゚ストの割合を制埡したす。たずえば、少人数のナヌザヌを察象にカナリアリリヌスを導入する堎合、ナヌザヌからのフィヌドバックを埗るためにカナリアリリヌス甚に小芏暡なサヌバヌを1台蚭眮し、ナヌザヌの内5だけをそのサヌバヌにルヌティングしたす。そしお、残りの95のナヌザヌには、今たでず同じアプリケヌションのバヌゞョンを䜿甚しおもらいたす。 レむテンシヌルヌティングポリシヌ (通垞はDNSルヌティングクラむアントに近く、レむテンシヌが最も䜎いサヌバヌにルヌティングしたす。䜎レむテンシヌを優先する堎合には、このポリシヌが適しおいたす。 最小コネクション数 通垞はロヌドバランサヌトラフィックが最も少ないサヌバヌにトラフィックが送られたす。このアルゎリズムは、倧きなリク゚ストが特定のサヌバヌに集䞭するのを防ぐこずで、ピヌク時のパフォヌマンス向䞊に圹立ちたす。 ヘルスチェック ハヌトビヌト フェむルオヌバヌ。ラむブセッションを行い、各サヌバヌの状態を監芖したす。ロヌドバランサヌは、登録されおいる各サヌバヌのハヌトビヌトをチェックし、あるサヌバヌの状態が良くない堎合はリク゚ストのルヌティングを停止し、別の正垞なサヌバヌに転送したす。 IPハッシュ通垞はロヌドバランサヌ最適なパフォヌマンス (キャッシュ等) が埗られるように、クラむアントのIPアドレスを固定サヌバヌに割り圓おる 䜍眮情報ルヌティング (通垞はDNSルヌティング倧陞、囜ずいったナヌザヌの各堎所に基づいお、適切なサヌバヌぞ案内したす。 マルチバリュヌ DNSルヌティングのみ1぀ではなく耇数のIPアドレスを返したす。 パスベヌスのルヌティング (レむダヌ7ロヌドバランサヌのみ リク゚ストのパスに応じお、凊理を担圓するサヌバヌを決定したす。䟋/processingの堎合、リク゚ストは凊理サヌバヌぞ、/imageの堎合、むメヌゞサヌバヌぞ転送されたす。 最埌に ハヌドりェアロヌドバランサヌずDNSルヌティングは混同されがちです。これらは互いに代替手段ずいうわけではなく、通垞は組み合わせお䜿われおいたす。重芁なのは、デヌタセンタヌ間や地域間などの広い地域にたたがる堎合にはDNSルヌティングが䜿甚されおいるずいうこずです。ハヌドりェアロヌドバランサヌよりもはるかに安䟡で高速であるためです。その埌の段階で䜿甚されるのがハヌドりェアロヌドバランサヌで、倚くの堎合デヌタセンタヌや地域内においおトラフィックを分散させたす。DNSルヌティングはDNSク゚リを、ハヌドりェアロヌドバランサヌはトラフィックをそれぞれ凊理したす。 これら2぀の定矩の理解は、高いパフォヌマンスず可甚性を持ったグロヌバルシステムの構築に䞍可欠なものです。 参考 https://medium.com/@phamduchoang.eee/but-what-is-osi-model-29578b795f0c https://iq.opengenus.org/layer-4-layer-7-load-balancing https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-policy-edns0.html
自己玹介 KINTOテクノロゞヌズKTCでアプリケヌション゚ンゞニアをしおいるJLず蚀いたす。珟圚はグロヌバル開発グルヌプのフロント゚ンドチヌムに所属しおいたす。 日本に来る前はフィリピンで34幎働いおいたした。最初は氎産業界でテクニカルサポヌトずしお、その埌は金融セクタヌで゜フトりェア゚ンゞニアア゜シ゚むトずしお働いおいたした。 フロント゚ンドずビゞネスサむドの䞡面からプロゞェクトに携わるこずで、Webやバッチ凊理、ビゞネスプロセスにおける開発経隓を積むこずができたした。䜿甚しおいたのは䞻にJava、JSP、JavaScript、CSSです。たた、゜フトりェア゚ンゞニアの専門的スキルも孊ぶこずができたした。圓瀟の埓業員ずしお䌚瀟に貢献しようずすれば必ず必芁になるスキルです。 勀めおいた䌚瀟は日本に本瀟があり、それで日本に行っおみたいず思うようになりたした。日本の゚ンゞニアチヌムが高い技術力を持っおいるこずは知っおいたしたし、日本は科孊技術分野で高い評䟡を受けおいる囜ですから、そういった環境で盎接孊びたいず思いたした。 KINTOテクノロゞヌズに入瀟 日本に来おからは、東京の掟遣䌚瀟で契玄瀟員ずしお働いおいたした。掟遣瀟員ずいう立堎だったので、担圓するプロゞェクトの範囲や責任は限られおいたした。 リクルヌタヌからKINTOテクノロゞヌズを玹介された際、以䞋のような理由で魅力的に感じたした。たず、人々が旅行や出匵で䞖界䞭を飛び回っおいる䞭、KINTOテクノロゞヌズのモビリティサヌビスのグロヌバル展開には成長の可胜性があるず感じたした。 次に、KINTOテクノロゞヌズはただ新しい䌚瀟ですが、長幎にわたっおより良い車ずサヌビスを䞖界に提䟛しおきたトペタグルヌプの䞀員であるこずにも魅力を感じたした。そしお技術的なスキルだけでなく、コミュニケヌションやビゞネス分析のスキルも孊べるず思いたした。 たた、グロヌバルグルヌプのアプリケヌション゚ンゞニアずしお、さたざたな囜の芖点からプロゞェクトに取り組む機䌚も倚くあるこずでしょう。 KINTOテクノロゞヌズは明確なビゞョンを持った䌁業であり、今珟圚もさらなる成長の可胜性を秘めおいたす。䟡倀ある未来の補品を開発できるポテンシャルがありたすし、その開発に携われるこずを願っおいたす。 KINTOテクノロゞヌズでの生掻ず経隓 グロヌバルグルヌプは囜籍豊かな倚文化グルヌプで、日本、䞭囜、ベトナム、むンド、フィリピンなどから人が集たっおいたす。 チヌムでは英語を䜿うので、コミュニケヌションが取りやすく、蚀葉の壁をあたり感じたせん。 日本にいながら、グロヌバルグルヌプはタむやカタヌルずいった海倖のKINTOサヌビスの支揎をしおいたす。 たた、グロヌバルグルヌプでは毎月アンケヌトを実斜しおおり、その䞭で改善のためのフィヌドバックや提案をするこずができたす。さらに月に1床、䞊叞ずの1on1ミヌティングがあり、キャリアプランを立おたり、瀟内においお今埌取り組んでいきたいこずを決めるのに圹立っおいたす。 入瀟埌、フロント゚ンド・゚ンゞニアリングチヌムに配属されたした。チヌムの仕事は、グロヌバルグルヌプ補品のフロント゚ンドの開発ず、そのためのWebレむアりトを匷化し、サむト蚪問者の目を惹くような仕䞊がりにするこずでした。 そのチヌムで私はテクノロゞヌポヌタルの開発を任されたした。テクノロゞヌポヌタルはれロから開発されたもので、どのような゜リュヌションが䜿えるのかを知るために䞖界䞭のKINTOパヌトナヌに利甚いただいおいたす。 テクノロゞヌポヌタルはGatsby.js、CSS、AWS S3を利甚しお開発されおいたす。䜿われおいるプログラミング蚀語やアヌキテクチャが銎染みの薄いものだったので倧倉でしたが、やりがいはありたした。ありがたいこずに、このおかげで短期間で倧きく成長するこずができたした。 珟圚、 Global KINTOアプリのランディングペヌゞ の開発に取り組んでいたす。このペヌゞでは、Global KINTOアプリに関する情報ず各囜のKINTOサヌビスに関する情報をご芧いただけたす。 このプロゞェクトでは、既存のりェブサむトをKINTOのデザむンシステムに沿ったデザむンに改良したした。このデザむンシステムでKINTOのシステムずプロダクトデザむンの統䞀を図りたす。詳しくは こちら をご芧ください。プロゞェクトでは䞻にVue.js、Vuetifyを䜿っおいたす。今回のプロゞェクトを通しお、デザむンのセオリヌずベストプラクティスに぀いおより深く孊べたした。ずりわけ、レスポンシブデザむンの方法や、SASS、CSSの効率的な䜿い方に関する分析スキルやクリ゚むティブさが鍛えられおいたす。 終わりに たずめるず、日本に行くこずを決めたずきに思い描いおいた通りのキャリアを、KINTOテクノロゞヌズで歩むこずが出来おいたす。応募したのはアプリケヌション開発ずモビリティアプリだったので、最初はこれらだけを担圓するものだず思っおいたした。しかし、そのようなポゞションに限定されず、フレキシブルに色んな業務を任されおいるこずで、システムデザむンやWeb開発にも取り組み、自身のスキルアップ、キャリアアップに繋がっおいるず思いたす。 短期にスキルを身に着け、課題に挑戊し、そしおその課題を芋事に解決する。解決した埌の爜快感を味わうず、この䌚瀟で働けお良かったずいう気持ちになりたす。自分のスキルが倧きく向䞊したこずに気付きたす。 これから出䌚う、より゚キサむティングな課題ぞの挑戊が楜しみです。瀟員を特定のポゞションに限定しないので、KINTOテクノロゞヌズには倚くの可胜性がありたす。将来的には私でもアプリケヌションサヌビスの開発に携わったり、テックリヌドずしお働く可胜性もあり埗たす。 䌚瀟ずしお競争力があり、スキルアップの機䌚も倚く、責任ある仕事を任され、キャリアアップを図るこずができる、そんな職堎をご垌望なら、ぜひKINTOテクノロゞヌズで働いおみたせんか 特にグロヌバルグルヌプには、倚様で優秀な人材が揃っおいたす。各自が業界のトレンドに合わせお垞にスキルを向䞊させおいたす。KINTOテクノロゞヌズには確固たる基盀があり、ここで働くこずになれば、きっず゚キサむティングなプロゞェクトに取り組むこずができるでしょう。 https://www.kinto-technologies.com/recruit/globalkinto
はじめに こんにちは。KINTO Technologiesのグロヌバル開発郚でフロント゚ンド開発をしおいるクリスです。 この間 Vue Fes Japan 2023 に参加しおきたしたので、圓日参加した講挔の芁玄ず私の所感に぀いお玹介したいず思いたす。 ゚ンゞニアになっお最初の頃にVueに觊り始めお、以降もずっずこれを利甚しおきたのにも関わらず、2018幎に初開催されたこのむベントに今幎初めお参加するのは少し恥ずかしい話ですが、初参加ずいうのず、VueずViteのクリ゚むタヌであるEvan You氏に䌚えるのもあっお、圓日朝からずっずワクワクの状態でした そしおようやく䌚堎に着いたら、入り口に曞き蟌みボヌドがあったのでさっそく匊瀟の存圚をアピヌルしおみたした Evan You氏による基調講挔 䞻にVue3の振り返りで、良かったこずず反省すべきこずに぀いお述べられたした。 たず反省点ですが、Vue2からVue3ぞのマむグレむションが倧倉だったこずに぀いお話されたした。具䜓的には以䞋のポむントです。 砎壊的な倉曎箇所が倚かったこず Vueの゚コシステム内になるラむブラリヌに䞎えるむンパクトを過小評䟡したこず すべおの倉曎箇所を䞀気にリリヌスしなかったこず 䞀方、バヌゞョンアップそのものに関しおは、良かったこずもありたした。 よりTypeScriptフレンドリヌになったこず Composition APIを導入したこず 開発者䜓隓DXに投資したこず Vue3が確実に成長しおいるこず これらを元に、今埌の展望ずしおは、「安定」を重芖し、これからのバヌゞョンアップの際に今回みたいに砎壊的な倉曎を抑えおいきながら、 スムヌズに改善点や新機胜を取り入れられるようにし、開発者にずっおよい開発䜓隓を䞎えたいずのこずでした。 その䞀぀の䟋ずしお、Vueの゚コシステムCIを導入し、今埌Vueのバヌゞョンを䞊げる際にVueをdependencyずしおいるラむブラリヌに砎壊的な圱響を䞎えおいないかを確認するCIツヌルが立ち䞊がりたしたが、党おのテストが通ったずは蚀え、䟋えば本公挔の前にリリヌスされたv3.4 alphaに関しおは、リファクタリングが倚かったので、やはりコミュニティヌのみなさんにいろいろテストしおもらい、フィヌドバックを求めおいたした。ちなみにこのリリヌスには、メモリ制埡の改善や、より正確か぀効率的なre-computeの実珟などが含たれおいたす。 基調講挔を聞いお、自分もVue2からVue3ぞのマむグレむションで挫折したこずがありたしたので、それをEvanさんが反省点ずしお取り䞊げおくださっお良かったず思いたす。 ちなみに䜙談ですが、講挔䞭HDMIの接続がどうやら悪く、䜕床も切断されたしたが、なんずか無事に講挔を終えたした笑 Nuxtに関するアップデヌト 続いおはNuxtLab CEOのSebastian Chopin氏ずNuxt CoreチヌムメンバヌのDaniel Roe氏がそれぞれNuxtに぀いおお話しをしおくれたした。 たずはSebastianさんがNuxtの最近のアップデヌトを玹介し、䞭にはHybrid Rendering(ペヌゞごずレンダリング方法を蚭定するこず)のデモやCloudflareを䜿っおNuxtアプリをEdgeにデプロむするデモを芋せおくれ、最埌はNuxtの゚コシステムをより倧きくするための仲間を募集しおいたした。 䞀方、DanielさんはNuxtの゚コシステムを玹介し、それぞれのツヌルやラむブラリヌの最新情報を話しおくれたした。䟋えば Nuxt2でもComposition APIなど3系の機胜が䜿えるようにする nuxt/bridge Nuxtのテストに様々な機胜を提䟛する nuxt/test-utils マヌクダりンファむル(.md)だけでペヌゞ䜜成できる nuxt/content などがありたした。 そしお最埌はNuxt4の方針に぀いお、よりDXをフォヌカスし、オプトむン方匏でたくさんのツヌルを提䟛し、そしおよりオヌプンな開発プロセスを実珟するために倚くの人に参加しおもらいたいず話したした。 お二人の講挔を聞いお、Vue/Nuxtのナヌザヌずしお、開発に携わっおいるみなさんの掻躍を芋お、将来的には䞀人のコントリュビュタヌずしおこのコミュニティヌに貢献したいなず思いたした。 OSS掻動における考え方 本セッションはAnthony Fu氏が、ご自身のOSS掻動に぀いおお話されたした。 たずはご自身がOSS掻動に参加されるきっかけずなった vscode-vue-i18n-ally ずいう゚クステンションに぀いお䟋を挙げたしたが、名前通りVSCodeずいうIDE、Vueずいうフレヌムワヌク、i18nずいう機胜を利甚する人のためのアクセサビリティヌツヌルであり、そう考えるず実はタヌゲットナヌザヌはかなり限定されおしたうこずになりたす。それではより倚くの人に䜿っおもらえるにはどうしたらいいでしょうか。 Anthonyさんは察象ずなる二぀のアプロヌチを玹介したした、䞀぀はツヌルそのものの利甚制限をなくすこずです。䟋えば、 vscode-vue-i18n-ally に戻るず、Vue以倖のフレヌムワヌクも䜿えるようにすれば、利甚できるナヌザヌが自然に増えるこずになりたす。その結果が i18n-ally です私の知っおいる限りこちらもVSCode甚の゚クステンションですが。そしおもう䞀぀はの方法は耇数のツヌルでツヌルのナニオンを結成するこずです。䟋えば、Nuxtの呚蟺には倚くのサポヌトツヌルがあり、それぞれを必芁ずするナヌザヌが䞀定数いたす。このようなナニオンがあれば、ナヌザヌは必芁なツヌルを䜿い、それだけで倧きい開発コミュニティを䜜るこずができたす。この二぀のアプロヌチは利甚ナヌザヌを増やすだけでなく、利甚ナヌザヌが増えたこずによっお、最終的にコントリュビュタヌも増えるずいう効果が期埅されたす。 圌の話を聞いお、ただOSS掻動に携わったこずがない自分から芋るず、OSSにも普通のプロダクトず同じく、ナヌザヌ獲埗ずいう抂念があっお、より倚くのナヌザヌに䜿っおもらえるようにはどうしたらいいか垞に考えないずいけないなず思いたした。 質問コヌナヌ 最埌のセッションはEvanさん、SebastianさんずDanielさんに色々質問を答えおもらうセッションでした。1時間なのに、事前にみなさんから投げた質問が倚すぎお結局䞀郚しか答えられなかったが、その䞭には特に印象に残ったのが以䞋4぀でした。 Q: サヌバヌサむドコンポヌネントに぀いおどう思うか A: 結局StaticはStaticのよさがあるので、自分のニヌズに合うのを䜿えばいいが、サヌバヌサむドコンポヌネントを利甚した方がいい䟋を䞀぀挙げるずしたら、ECサむトでしょう。 Q: Vue, Nuxt, Vuetifyをたずめお2から3にマむグレむションするのが倧倉で、やり方を教えお欲しい。 A: たずこんなに倧倉になるのは完党に私のせいですね、そこは申し蚳ない笑 䞀぀のやり方ずしおは、スクラッチから別のプロゞェクトを立ち䞊げお、少しず぀移行しおいくのがよいでしょう。 Q: Nuxtにずっおのいいコンポヌネントのデザむンパタヌンはあるのか A: 特にない、Vueを䜜った時はAngularがプレれンタヌパタヌンを利甚しおたが、パタヌンに瞛られたくないずいう思いがあったからこそ今のVueなので、こちらに関しおもたずは小さく開発し、ちょっずず぀どんなパタヌンがいいか決めおいけばいいでしょう。 Q: VueのNativeアプリ察応に぀いおの予定を教えおください。 A: 今のチヌムだず察応する䜙裕がたったくない、たぶん数倍くらいのリ゜ヌスが必芁。IonicやNativeScriptを利甚するずいいのではないでしょうか。 アフタヌパヌティヌ アフタヌパヌティヌは立食圢匏で、協賛によっお掋食ず寿叞が提䟛されたした。 自分はかなり内向的な性栌でい぀もパヌティヌなどでこちらから声をかけるこずを躊躇っおいたすが、勇気を持っお最埌の最埌に来日しおくださったEvanさんをはじめずするコアチヌムメンバヌに声をかけおみお、色々話せおよかったです䞭にはAnthonyさんに初めおオヌプン゜ヌス開発で色々䞍安を持っおいる方ぞのアドバむスに぀いお聞いおみたずころ、「1. たずは小さいツヌルからスタヌトしおみるこず、2. ずにかく勇気を持぀こず」を語っおくれたしたが、これを聞いた私からするずすぐ玍埗いきたしたね。 感想たずめ 正盎に蚀うず、初めおVueずNuxtのコミュニティむベントに参加し、ずおも楜しかったですが、それより䞀番思ったこずはやはりOSSコントリュビュタヌはやはりすごいずいうこずでした。VueずNuxtのコアチヌムはさほど倧きくないからこそ、しっかりやるこずを制限質疑応答にあったVue Nativeをやらないず決めるこずなどしたこずず、䜜ったツヌルをVueだけではなく、他のフレヌムワヌクにも恩恵受けるにはどうしたらいいかを考えるマむンドセットを持たれおいお尊敬しかありたせん。 来幎はどんな圢であろうが、たたVue Fes Japanに参加したいず思いたす
Introduction Hello! I’m Kin-chan from the Development Support Division at KINTO Technologies. It might seem sudden, but on Thursday, August 3rd, we’ll be hosting our very first KINTO Technologies MeetUp! - 4 Case Studies by and for Corporate IT Teams . This event will focus on the corporate IT domain and take the form of case study presentations followed by a roundtable discussion. In this article, I’d like to share the behind-the-scenes story of how we got this study session off the ground. If you’re someone who’s thinking, "I want to start and lead a study session from scratch," I hope this will be helpful and encouraging. What Comes to Mind When You Hear "Study Session"? It might be a bit sudden, but what comes to mind when you hear the term "study session"? Listening to experts in your field and gaining new insights Getting together with others who share your interests to learn and grow together Joining as part of your job, perhaps even being expected to attend, in the name of team skill-building (Though less common during COVID) Participating mainly for the conversations and food at the social gatherings As you can see, study sessions can serve many different purposes and come in many forms. When I think about what a study session means to me, I’m reminded of a community I once helped organize called " DevLOVE ." The concept behind it was to create a "learning space" where knowledge and experience could flow between the workplace and the outside world—to help move our teams and organizations forward. Having always seen value in study groups and communities like this, I joined KINTO Technologies hoping to get involved in opportunities to share and learn within the company. *I’ll go into more detail about how this mindset turned into concrete action in a future post in our "Agile Series." Okay, Then Let's Have a Study Session When I joined KINTO Technologies, I found that the company already had a strong culture of holding regular study sessions and offering many opportunities for learning. For example: Optional company-wide study sessions for engineers Business-focused sessions hosted by business divisions to deepen understanding of our operations Small group study sessions and book clubs organized within each product team What impressed me most was the supportive culture that encouraged participation in study sessions and book clubs—both inside and outside the company—as part of regular work. There’s even a system in place that covers the cost of books needed for learning. It was clear to me that KINTO Technologies genuinely supports its employees' development. In this environment, I started holding small study sessions and group reading sessions for my own team, spending my days learning alongside my colleagues. And somewhere in the back of my mind, I kept thinking, "I wish more people knew about this culture." One day, a discussion came up in our team about how we could better recruit corporate engineers. As we explored various ideas, one thought kept coming back to me: "How can we showcase our strengths and this great culture to more people?" The challenge naturally connected with my earlier desire to share our company’s learning culture more widely. As a result, we came up with the idea: "Why not hold a study session that includes people from outside the company?" I Can't Do This Alone! Help Me Everyone! With that spark, I quickly drafted a "Proposal for a Corporate IT Study Session" and shared it with our team leaders as a formal idea. Each leader gave it a "thumbs-up." That gave us a green light to move forward, but saying "let's do it" was only the beginning. There was still a lot to figure out: What would the theme be? Who would present? Where would it take place? When should we hold it? What would the timetable look like? It was clear that I couldn’t handle all this alone. So the following week, during the full team meeting, I made an announcement: " We’re going to hold a study session! We’re looking for members to join as organizers and speakers! " In the end, a team of six was formed, including volunteers and recommended members! We immediately created a dedicated channel on Slack and began communicating with all the relevant members. To make sure everyone was aligned on the goal, we kicked things off with an internal meeting for the organizing team. Since not everyone had been involved from the initial planning stage, we focused on a few key areas: What is the purpose of the event, and what will it look like? What is the goal state we’re aiming to reach? What has already been decided, and what still needs to be figured out to reach our goal? How will we resolve the unsolved issues? We began by clearly aligning our "goals" and "understanding of the current status." Then, we set the "next milestone to aim for," and each member began preparations. We Can't Do All by Ourselves!! We Need More Help! The next step was for the organizing team to discuss the unresolved topics. We broke it down into five major areas: Content Format and equipment needs Date and timetable Promotion and outreach How to measure success We held in-depth discussions to clarify each point. As we worked through these, we identified what we could manage ourselves and what would require cooperation from other departments. Based on this, we began setting up meetings that included key stakeholders from other teams. *Once the decision to hold the study session was made, our manager had already started reaching out to divisions that might be needed for support. Thanks to that early communication, we were able to smoothly hold a company-wide kickoff meeting. Thankfully, many of the people who participated in the joint kickoff were very positive. In response to our ideas, they offered suggestions like, "How about trying this?" and "We’ve done something similar before, so it can be handled quickly." Their input helped us get closer to our goal. We Need Flexible Yet Transparent Project Management! As our plans became clearer, a number of concrete action items began to emerge in parallel. We realized that if we simply relied on "whoever could handle it" to take things on as they came, it would be difficult to keep track of progress. In other words, transparency would suffer. To avoid that, we decided to define a certain level of visualizing, progress tracking, and role assignments. Visualizing We used Jira to make tasks visible and prioritize them in a structured way using the "Epic > Task" hierarchy Progress Management We set weekly goals at the Epic level. Each week, we reviewed our progress and adjusted course as needed. If all went well, we would then set the next goal. Division of Roles We assigned responsibility for each Epic. If someone was falling behind or having trouble reaching their weekly goal, others would step in to help. This approach helped us achieve iterative, incremental progress in managing the organizing team. [Side Note] How We Applied "Agile Kata" to Run the Organizing Team As a quick aside, the way we approached organizing this event was inspired by the concept of the " Agile Kata ," particularly its idea of "Improvement Kata." According to "Agile Kata," you can apply agile thinking in your daily work by repeating the following steps: Understand the direction and challenges Grasp the current situation Set the next target state Experiment toward that target in an iterative way Even without relying on a fixed framework like Scrum, you can create an agile way of working simply by applying the Kata mindset. And Right Now... Even as I write this article, the discussions and actions needed for the study session are moving forward every single day, bringing us closer to the goal. We’re holding synchronous web meetings by topic, and Slack is buzzing with asynchronous conversations—some threads get more than 50 replies in a single day. It really feels like things are progressing quickly. Everyone’s doing an incredible job!! With preparations steadily taking shape, the " KINTO Technologies MeetUp! - 4 Case Studies by and for Corporate IT Teams " is finally within reach. Please look forward to the event!!
Introduction My name is Zume and I am the Quality Assurance (QA) Group Manager at KINTO Technologies. I'm a lifelong cat lover. Cats truly make everything better. There’s something special about their pure, honest nature. In this article, I’d like to introduce the role and responsibilities of our QA Group. About the QA Group The QA Group is primarily responsible for pre-release verification of various services at KINTO Technologies. Our mission is to improve the overall quality of the products we provide and take the lead in QA initiatives. Current Activities Until recently, our QA efforts mainly focused on domestic products like KINTO ONE (New Vehicle and Used Vehicle). However, KINTO Technologies also has a global development group, so we are now also involved in overseas product projects. We also offer an app called Warikan KINTO, which is developed in collaboration with a Swedish company. As a result, our QA communication for this project is conducted in English. In terms of the development process, our QA work corresponds to the system testing phase, which is paired with requirements definition in the V-shaped model. Our QA testing generally includes the following: Verifying that functions and performance meet requirements. Identifying and eliminating bugs and risks. Confirming that the product meets the release quality standards. At KINTO Technologies, User Acceptance Testing (UAT) is carried out by the business side, QA work involves a series of processes, from test planning, design, implementation, reporting defects, to checking modifications, and reporting release decisions after testing is complete. Depending on the project, QA does not only participate after development is complete, but rather participates from the requirements definition phase. The aim is to understand both business and system requirements at an early stage. The QA Group is also the only division that has the unique ability to perform cross-functional testing across different systems. Therefore, from our QA perspective, we aim to raise any concerns in advance so that we can resolve them at the earliest stage. After each release, we hold internal retrospectives, and participate in overall project reviews where we identify trends in defects and propose improvements. These efforts help ensure smoother progress in future projects. If you’re interested in an overview of our QA work, our team member okapi has written another article , so I’d appreciate it if you took a look as well! Group Members, Atmosphere, and Work Style There are currently nine members in the QA Group, including myself. As our team becomes more international, English proficiency is becoming increasingly valuable. While not strictly required, the ability to communicate in English can open up additional opportunities. Each of us has our own areas of expertise, such as apps or web, but we structure the team so that everyone can handle any product as needed. Our members vary in age, and the gender ratio is roughly 50/50. We don’t rely solely on Slack or Zoom. In fact, we often come to the office and talk face-to-face more than online. We also keep a dedicated Zoom room open all day, so whether you’re working remotely or in the office, there’s always someone you can talk to. Since we work with external partner companies, we frequently use Zoom breakout rooms for meetings. To keep the communication flowing smoothly within the team, we hold morning meetings at the start of the day, an evening wrap-up meeting, and a weekly team meeting. While some members work from home depending on the day, most meetings are held via Zoom. However, our weekly team meetings are usually held in person. We also hold study sessions from time to time to help improve team members’ skills. These are not regular events, but we organize them as needed. For now, the main focus is on deepening our understanding of services and system specifications. In the field of testing, the Foundation Level certification defined by ISTQB is generally considered a basic qualification. However, we do not require it as long as you have equivalent experience and skills. In fact, having a certificate alone is not enough. What really matters is how well you can apply that knowledge in practice. That’s why we place greater value on hands-on QA experience, such as the types of projects you’ve worked on and the specific roles you played, as well as your practical skills. This applies to engineers in general, and QA engineers are no exception. Strong problem-solving skills are essential. Future Outlook In our QA Group, we have been working on test automation for some time now. Currently, automation is limited to certain areas and only covers the web, but in the future we would like to expand it to the mobile (native apps) area as well. We hope to share more about the tools we use, and those we’re considering, in a future post. Since everything we work on is car-related, if you enjoy cars, whether driving or just looking at them you'll likely find it even more enjoyable. Personally, I’ve been driving and owning cars for quite a long time, and I still enjoy learning new things and making unexpected discoveries every day. The QA Group also plays the role of the final checkpoint to ensure product quality before it reaches our customers. At the same time, we’re also the team that gets to experience new services before anyone else. If you find that rewarding and interesting, we would love for you to join us.
Introduction Hello, we're Yao Xie and Mooseok Bahng, who work on mobile app development in the Global Group at KINTO Technologies. We're currently working on an app called Global KINTO App . The Global KINTO App (GKA) was built with the goal of connecting together KINTO services all over the world with a single app. So far, KINTO services have been deployed in Thailand and Qatar. While working on a project destined to replace an existing app, we decided to adopt Kotlin Multiplatform Mobile (KMM). So, we're going to talk about that. Background on why we decided to adopt KMM There were a few issues that lead to our decision to adopt KMM. - No matter what we did, differences always arose in the business logic between iOS and Android. - The development team is physically split between 2 locations, which can impact development efficiency. -> We thought we could improve things by dividing the team into KMM and native. - Our development resources are limited, so we want to create an efficient development system. Based on these, we started to consider KMM. What is Kotlin Multiplatform Mobile (KMM)? An SDK for developing iOS and Android apps, KMM uses Kotlin as its base language, and offers the benefits of both cross-platform and native apps. You can develop a common business logic using KMM, then develop the platform-dependent UI elements natively. We personally think that it's best to provide the optimal UI/UX for each OS. With KMM, you basically develop each UI natively, so the UI/UX can be optimized with little dependence on iOS and Android, and we also think version upgrades are going to have virtually no impact. KMM is still a new technology and isn't very mature, but it's been getting used more and more by various companies in recent years. Kotlin Multiplatform Mobile (source: https://kotlinlang.org/lp/mobile ) Architecture Before we talk about KMM, let's talk about the architecture currently being used by the development team. In short, we develop using an MVVM pattern. This policy basically won't change even though we're adopting KMM. At this point, we were wondering just how much we should include in KMM. There are around three options. KMM Native Option 1 Repository, Usecase, View Model UI Option 2 Repository, Usecase View Model, UI Option 3 Repository Usecase, View Model, UI We tried various approaches, but for now, we're moving in the direction of using KMM up to the view model. We also considered leaving out the view model, but couldn't find any good reasons for handling it separately despite making the effort of adopting KMM. This is especially true for simple features like displaying data in a list. Maybe we'll need to do the view model separately as more complex features get added. When that happens, it should be possible to do just some parts of it separately. The codebase for iOS is now pretty compact. We're using KMM up to the domain layer and view model, so there's only UI- and platform-dependent hardware-related features, and we think it'll probably amount to at most half as much source code as before. Here's some iOS code for a simple screen with an FAQ list. Apart from a common UI Utility class, this is all we need. swift struct FaqView: View { private let viewModel = FaqViewModel() @State var state: FaqContractState init() { state = viewModel.createInitialState() } var body: some View { NavigationView { listView() } .onAppear { viewModel.uiState.collect(collector: Collector<FaqContractState> { self.state = $0 } ) { possibleError in print("finished with possible error") } } } private func listView() -> AnyView { manageResourceState( resourceState: state.uiState, successView: { data in guard let list = data as? [Faq] else { return AnyView(Text("error")) } return AnyView( List { ForEach(list, id: \.self) { item in Text(item.description) } } ) }, onTryAgain: { viewModel.setEvent(event: FaqContractEvent.Retry()) }, onCheckAgain: { viewModel.setEvent(event: FaqContractEvent.Retry()) } ) } } Pros Single codebase We can manage iOS and Android networking, data storage, business logic, and more with a single codebase. Consistency Having a common business logic means we can basically provide the same UX. Efficiency Adopting KMM has enabled us to do development work more efficiently. Cutting our time costs almost in half means we're getting to spend that much longer on source code optimization and business deployment. Expandability We can easily expand development as needed to include other platforms besides iOS and Android. Cons For iOS debugging, you need to install a separate plugin. If you use XCframework, using Simulator on an Apple Silicon Mac results in an error because it references arm64. We think this will need to be fixed on the KMM SDK side, but for the time being, we can use Simulator either by adding arm64 to the excluded architecture, or running Xcode in Rosetta mode. Distribution method for iOS Build & Sourcesets Build XCFrameworks Up to now, distributing KMM to iOS has basically been done with a Universal (FAT) framework. Official support for XCFramework has finally come out recently, so we're planning to go with that. https://kotlinlang.org/docs/multiplatform-build-native-binaries.html#build-xcframeworks Other They're not directly related to KMM, but here are some other new technologies we're also thinking of adopting: Ktor You can use the same settings for both clients. The API Request code is the same. The engines for iOS and Android are separate, but no additional code is required. Apollo Client We're also using some of the GraphQL API in some of existing projects. We're thinking of adopting the Apollo Client in order to use GraphQL. You just need to create Queries.graphql using schema.graphqls in the backend, and Models, Adapters, and Queries will all get created automatically. https://github.com/apollographql/apollo-kotlin MMKV MMKV is a mobile key-value storage framework. It supports multiple platforms, including Android and iOS of course. https://github.com/Tencent/MMKV https://github.com/ctripcorp/mmkv-kotlin With MMKV-Kotlin, we can easily integrate MMKV into our projects and manage key-value storage with a shared module. Performance comparison on Android Performance comparison on iOS Future developments Fast growing KMM ecosystems KMM is being developed by Jetbrains. It can be used seamlessly with Android Studio and has some Xcode support as well. It's spreading among developers, and there are a lot of open source libraries for it. https://github.com/terrakok/kmm-awesome Cross-platform UI Touchlab has already started experimenting with using Compose UI for both iOS and Android. https://touchlab.co/compose-ui-for-ios/ @Composable internal actual fun PlatformSpecificSettingsView(viewModel: SettingsViewModel) { IconTextSwitchRow( text = "Use compose for iOS", image = Icons.Default.Aod, checked = viewModel.observeUseCompose, ) Divider() } KMM may start to officially support cross-platform UIs in the near future. Summary In this article, we talked about how we've adopted KMM. We're now expecting it to bring the following improvements: - Being able to minimize the business logic gap between iOS and Android - Being able to optimize the development team structure if required - Reducing the development time to a certain extent We're still in the early stages of adopting KMM and are going to face lots of issues and steadily build up our know-how, so we'll share more once we've made some more progress. Thank you for reading.
はじめに こんにちはKINTOテクノロゞヌズの開発支揎郚に所属する「きんちゃん」です。 普段はコヌポレヌト゚ンゞニアずしお「党瀟利甚するITシステムの維持管理」を行っおいたす。 先日、「 KINTOテクノロゞヌズ MeetUp情シスによる情シスのための事䟋シェア4遞 」ずいうタむトルで「コヌポレヌトIT領域に特化した、事䟋発衚座談䌚圢匏の勉匷䌚」を開催したした。 今回は、その勉匷䌚で事䟋発衚した内容に぀いお、補足を亀えながらテックブログ䞊で玹介したす。 発衚資料 圓日の発衚資料党䜓に぀いおは、以䞋を参照ください。 【アジャむルなSaaS導入】最小工数お゙玠早く最倧の成果を生む秘蚣 ここから先は、実際に発衚で利甚したスラむドず共に、資料だけでは分かりづらい郚分の補足や、䌚堎ではお話できなかった郚分に぀いお、色々ず補足しおいきたす。 タむトルの遞定 さっそくですが、このタむトルです。 「アゞャむル」ずいうキヌワヌドに぀いおは、倚くの方が色々な解釈を持たれおおり、発衚のタむトルずしお利甚するのは、なかなか悩むずころです。 ただ、僕の発衚を聎いおくださった/芋おくださった誰かが「あ、こういうのもアゞャむルなんだ」「そんなに難しい話じゃないな」ずいった気づきを埗お、それがその人の新たな行動の埌抌しになれば、ず考えお「アゞャむル」を利甚したした。 ※もちろんキヌワヌドずしお「惹きがある」ずいう点もポむントでした。 話すこず/話さないこず タむトルで「アゞャむル」のキヌワヌドを䜿ったからには、やはりメむンで䌝える内容は「アゞャむル゜フトりェア開発における䟡倀」にリンクできるず良いなず思ったので、このような内容にフォヌカスしおいたす。 もし「もっず詳しい導入プロセスや、プロゞェクトの途䞭で起きた地味な話を聎いおみたいよ」ずいう方がいらっしゃれば、ぜひKINTOテクノロゞヌズぞのJoinをご怜蚎ください。 背景 たずはITチヌムから導入を開始したITSMIT Service Management≒問合せ/䟝頌管理ツヌルですが、それなりにスムヌズな導入ができた背景もあり、IT以倖の管理郚門にも導入したしょうずいう流れができたした。 その流れができるたでは、瀟内であたり「IT以倖の管理郚門」に接する機䌚はありたせんでした。 僕自身、前職以前を含めお過去に倚くの非IT郚門の方々ずのプロゞェクト経隓があったため、このプロゞェクト掚進の指名をもらった時は、過去の経隓が掻かせるず感じたため、嬉しかった蚘憶です。 「ある皋床のゎヌルむメヌゞはあるものの、具䜓的な芁件や機胜に぀いおは定たっおおらず、ずは蚀えなるべく工数はかけずに勝ちを埗たい」ずいう背景から、「カッチリず芁件を決めおフェヌズを切った導入≒りォヌタヌフォヌル」よりも、「最小限の䟡倀を䜜り蟌みながら、察話ず軌道修正を繰り返す導入≒アゞャむル」の方が適しおいる、ず刀断したものになりたす。 このスラむドでは「アゞャむルに進めるず良いんじゃなヌい」ず、あたかもプロゞェクト開始時点から考えおいたように芋られたすが、実際には「どういうふうに進めようかなヌ。ずりあえず関係者の人たちに話を聎くずころからだなヌ」くらいの感芚でした。 実際には、管理郚門の方々ずのヒアリングを経た䞊で、「この人たちずなら、このスタむルで進められそう」ずいう感芚を埗たため、埌述の「アゞャむルな進め方」に螏み切った圢です。 アゞャむルに぀いお 僕は、瀟内で「アゞャむルっおなんですか」っお聞かれた時に「短い期間でカむれンを繰り返しながら、䟡倀にフォヌカスした仕事を進められおいる状態です」みたいな回答をしおいたす。 ゜フトりェア開発に觊れおいる方であれば「アゞャむル゜フトりェア開発宣蚀の䟡倀ず原則」は分かりやすいですが、そこにピンず来ない人もいたす。 最近では「アゞャむルのカタ」ずいう文曞も公開されたり、非IT向けのアゞャむル曞籍も発売されたり、色々ず説明しやすくなっおきたな、ずいう感芚がありたす。 プロゞェクトの進行に぀いお ここからのスラむドに぀いおは、できるだけ「アゞャむル゜フトりェア開発宣蚀における䟡倀」にリンクする圢で「どこがアゞャむルなのか」を説明できるように心がけたした。 このスラむドで䌝えたかった事は、「なるべく無駄なコミュニケヌションを枛らし、本質的な䌚話にすぐ入れるようにするための仕掛けづくり」です。 良くある゜フトりェア開発の堎合は、「今どのような業務をおこなっおいるのか」を探玢する工皋や、「䜕をやりたいか」を明らかにしおいく工皋がありたす。 今回は「ある皋床のカタが決たったSaaSの導入」であるため、「今の業務を元に芁件を定めおいく」よりも、「カタを前提にした、良い䜿い方」を暡玢しおいく方が適切ず考えたした。 たた、ロヌコヌドツヌルの匷みずしお、初期段階での「䜜っお壊しお䜜り盎す」のコストが圧倒的に䜎い事もあり、「初回の打ち合わせ前に、最小限の䟡倀が提䟛できるプロトタむプを䜜る」事も容易に進められたした。 結果ずしお、初回の打ち合わせで「さぁ、どんなものを䜜りたいですか」ずいう䌚話を始めるのではなく、「こういう䜿い方のシステムだずどうでしょう䜕かおかしなずころはありたすか」ずいった、具䜓的な動くものを察象にした議論からスタヌトできるようになりたした。 これらは、アゞャむル゜フトりェア開発宣蚀でいうずころの以䞋の䟡倀にフォヌカスした点ずなりたす。 プロセスやツヌルよりも個人ず察話を 包括的なドキュメントよりも動く゜フトりェアを このスラむドで䌝えたかった事は、「短い間隔で䟡倀を䜜り蟌み、フィヌドバックを埗お、玍埗の行くシステムを提䟛するための仕掛けづくり」です。 打ち合わせで良くあるものずしお「持ち垰り怜蚎」がありたす。䟋えば「どういうメニュヌ構成が良いか怜蚎しおくる」「どういう凊理フロヌが良いか怜蚎しおくる」ずいったものです。 今回は、そのような「持ち垰り怜蚎」を「盞手にお任せ」するのではなく、「持ち垰り怜蚎の堎に、自分がゲストずしお参加させおもらう」方法を取りたした。 そうする事で、䌚話の䞭で出た質問や懞念・違和感ずいったものを即座に受け止め、玠早く回答したり、その堎でシステムの改修に手を぀ける事もできるようになりたす。 結果ずしお、「持ち垰り怜蚎の堎」であるにも関わらず、「怜蚎を螏たえた仕様倉曎ず、実際の機胜改修」たでも進めおしたえるようになりたした。 たた「ここで倧きな仕様倉曎が出た」ずありたすが、ある意味「䜜り盎し」をした方が良い状況になりたした。もちろん、これたで䜜ったものを捚おる事になりたすが、議論の堎に僕も参加しおいた事で「䜜り倉える事の必芁性ず䟡倀」に぀いお十分に玍埗した䞊で、その遞択を取る事ができたした。 これらは、アゞャむル゜フトりェア開発宣蚀でいうずころの以䞋の䟡倀にフォヌカスした点ずなりたす。 契玄亀枉よりも顧客ずの協調を 蚈画に埓うこずよりも倉化ぞの察応を プロゞェクトを終えおみお 今回のプロゞェクトを通じお、僕が倧きく埗られたず感じるものは「信頌関係」です。 あくたでも僕からの䞀方的な意芋ではありたすが、「この人たちず䞀緒に仕事をするず、良い結果が埗られる」「次も䜕かあったら盞談しおみたい」ず思っおもらえるようなきっかけづくりに貢献できたのではないか、ず感じおいたす。 今回の䟋にあるような「アゞャむルな取り組み方」でなくおも、もちろん良い結果を産めるような進め方は倚くあるず考えおいたす。 ただ、䜕か進め方に困った堎合は、「アゞャむル」が持぀䟡倀を参考に、自分の行動をちょっずだけ倉えおみる事をオススメしたす。 ありたい姿を描き、そこに向かっおちょっずだけ行動を倉えおみる ちょっずだけ倉えおみた行動の結果を芳察し、そこから曎にありたい姿を描く たたちょっずだけ行動を倉えおみる この繰り返しができおしたえば、それはもう「アゞャむル」な状態ず蚀えるでしょう。 最埌に 冒頭にも曞きたしたが、今回の事䟋を芋おくださった誰かが「あ、こういうのもアゞャむルなんだ」「そんなに難しい話じゃないな」ずいった気づきを埗お、それが次の新たな行動の埌抌しになれば、幞いです。
Introduction Hello, everyone. T.S. here, a corporate engineer in the KINTO Technologies IT Management Team. We have an IT Management Team info page here , so please take a look at that, too. In the IT Management Team, we're working hard every day to provide an IT environment that can raise the productivity of the engineering organization that is KINTO Technologies. Our internal IT environment is composed of various elements and it'd be difficult to cover everything all in one go, so in this article, I'm going to focus on device management. What is device management? Premise At KINTO Technologies, every staff member is loaned a set that includes the following: A laptop (Windows or Mac) A smartphone So, if we can understand and manage things like who the devices are being used by and what condition they're in, it'll be easier to support a pleasant development environment. What is MDM? As the premise states, all staff are using mobile devices. So, we've introduced Mobile Device Management tools. That’s right. They're generally called things like "MDM tools." What can you do with it? Essentially, MDM means tools for managing and operating mobile devices like laptops, smartphones, and tablets — e.g., managing their settings and app distribution. I imagine a lot of you might be thinking, "If that's all it's about, why do you need to work so hard to manage them?" But... KINTO Technologies doesn't have them on-site So, in terms of the SaaS* used on a daily basis for work, deciding whether devices can be trusted (i.e., are managed by the company) is a critical security issue. However, in order to make sure the development environment is always convenient as well as very secure, we need to think very carefully about which aspects of the devices we should manage, and which should be left to the users. SaaS = Software as a Service: Services that are installed on clients and used via networks such as the Internet. In terms of deciding which device aspects should be managed, which should be left up to the users, and how to not compromise convenience as a result, we pictured something like this: Seems like these should be managed Would be nice if these didn't have to be Behavior of security-related tools ・ Data leakage measures ・ Means of erasing data if the device is lost, etc. ・ Communicating with improper connection destinations ・ Asset management Applications needed for work ・ User-specific environment settings ・ Keyboards, mice, and other peripherals ・ Physical device storage and management KINTO Technologies' device management Overview The upshot is that this is what KINTO Technologies' MDM consists of: Item Service used IdP(※) Azure Active Directory Windows devices Smartphones Microsoft Intune Mac devices Jamf Pro IdP = Identity Provider: A mechanism for providing authentication services and managing account information. Challenges KINTO Technologies is in a rapid-growth phase, so lots of new staff are joining it every month. That means the number of devices is increasing at the same rate as the employees, so it's going to be extremely tough to manage them through human labor alone. So, we ended up systematizing our device management approach to solve the following issues: Time spent on device kitting Managing device information Managing application installation Controlling OS update cycles Applying encryption and managing recovery keys Remote locking and remote wiping The system we introduced Thinking about the work environment again... Work environment PCs -> Choice of Windows or Mac Smartphones -> Issued to all staff Environment -> Fully cloud-based Groupware -> Microsoft 365 Based on this, for Windows devices and smartphones, we adopted Azure Active Directory and Microsoft Intune, which are highly compatible with Microsoft 365. We could have said, "Let's manage Macs with Microsoft Intune as well, and have a fully unified MDM platform!" However, we decided to go with Jamf Pro instead, because it has a great track record with Apple products, and boasts quick syncing of settings and good flexibility in terms of management policies and items. Here's what our device management looks like: Overview of our device management Results No. Item Result 1 Time spent on device kitting → The time spent on kitting (including configuring settings) has gone down. △ 2 Managing device information → Goodbye ledgers, hello management consoles ○ 3 Managing application installation → Has changed from separate to centralized management △ 4 Controlling OS update cycles → Has changed from being the device users' responsibility to being managed centrally ○ 5 Applying encryption and managing recovery keys → Has changed from being done device by device to system-based management. We're especially glad to now have systemic key management! ○ 6 Remote locking and remote wiping → We can do them now! ○ The above results mean that we've more or less cleared the initial challenges, and should finally be able to say that we're at the starting line of device management. We want to go on improving our device management operations in order to deliver an ever better experience to all staff. Things we want to do in the future 1. Zero-touch kitting We'd like to consolidate the kitting requirements, etc., achieve zero-touch kitting, and reduce the amount onboarding time spent on the devices so that more of it can be spent on actual work. 2. Streamlining application-related operations We've achieved centralized management, but we'd like to refine these operations further so that we can respond to users in a more flexible and timely manner. 3. Managing the condition of devices We'd like to achieve detailed control and operations that address the condition of devices in (e.g.) inventory as well as of ones registered with the MDM, so that the devices can be kept in better condition. In conclusion Thank you for reading my article all the way to the end. I will continue to work hard to create an in-house IT environment that can contribute to the whole company and its business. We are hiring! KINTO Technologies is looking for people to work with us to create the future of mobility together. We also conduct informal interviews, so please feel free to contact us if you are interested. https://www.kinto-technologies.com/recruit/
Introduction Hi, this is Mori from the Global Development Group. I am usually working on the Global KINTO Web as a Product Manager and also responsible for handling personal data related tasks in Global Dev. group. KINTO offers a wide range of mobility services such as Full-Service Lease (car subscriptions), car rental services, etc. These services are available not only in Japan but also in over 30 countries worldwide, operated by affiliated companies and partners. For more information, please check out the list of our KINTO services around the world on the Global KINTO Web 🔎. Today, I would like to write a story about how we complied with personal data related laws in each country, which is crucial for expanding services globally. *Although the Global Development Group is part of KINTO Technologies, the product we develop become assets of our parent company, Toyota Financial Services Corporation . Therefore, we are handling all legal tasks as Toyota Financial Services Corporation. Background KINTO strives to provide seamless mobility experiences to our customers around the world with the brand promise of "Ever Better Mobility For All." To enable seamless access to each KINTO service separately operated in each country, we provide 'the Global KINTO ID Platform' (GKIDP), a solution to connect IDs around the world. I will skip the details of how it works in this article, but GKIDP allows users from one country (Country A) to use the services of another country (Country B) with the same ID. This means the global data transfer of personal data, such as users' names and e-mail addresses occurs across the different countries. As a side note, the definition of 'personal data' varies by country. For example, in the General Data Protection Regulation (GDPR) , 'personal data' is described as below: Article.4 (1) 'personal data' means any information relating to an identified or identifiable natural person ('data subject'); an identifiable natural person is one who can be identified, directly or indirectly, in particular by reference to an identifier such as a name, an 3 identification number, location data, an online identifier or to one or more factors specific to the physical, physiological, genetic, mental, economic, cultural or social identity of that natural person; General Data Protection Regulation Currently, strict laws related to personal data have been enacted in various countries, such as the GDPR in the European Economic Area (EEA) and the California Consumer Privacy Act (CCPA) in California, US. Also in Japan, the Amendments to the Act on the Protection of Personal Information was fully enforced in April 2022. This indicates a global trend towards strengthening personal data protection. Prominent companies have been inspected by supervisory authorities, particularly in Europe, and have been subject to substantial fines for non-compliance with regulations. Reference: The Biggest GDPR Fines of 2022 from EQS group blog Considering the above, we work to comply with personal data related laws in each country to provide GKIDP globally. GDPR Compliance and Challenges in Global Expansion: 1. Data Transfer Agreement (DTA): A Data Transfer Agreement (DTA) is an agreement that establishes the conditions for transferring personal data between jurisdictions and organizations, covering the data processing and global data transfer between signed entities. In Global KINTO, we anticipated the global transfer of personal data and have developed the "Global Data Transfer Agreement (GDTA)" framework. GDTA Components Contents Scope of the agreement The project overview and GDTA scope Role and responsibilities of each entity Role definition and responsible scope of each entities Adhension clause Provisions allowing other KINTO service providers to participate in the GDTA Annex Covering the use cases of anticipated roles and processing The entities who join the GKIDP should sign this agreement, and follow the following essential steps: ✅ Identifying the role of each entity and signing the GDTA. ✅ Evaluating the risk level of global data transfer considering use cases. ✅ Applying appropriate data transfer mechanisms. 2. Role Definitions Under the GDPR, the following definitions apply to the processing of personal data, and each entity requires appropriate contracts after defining their respective roles. Roles Definition Controller Alone or jointly with others, determines the purposes and means of the processing of personal data; Processor Processes personal data on behalf of the controller From the definition above, we consider each entity who joined GKIDP framework as Joint Controller for our case. These include: Local KINTO service providers in each countries who determines the purposes or users' personal data. Toyota Financial Services Corporation who developed and owns the GKIDP where users' personal data is stored 3. Use Cases and Data Transfer In order to transfer personal data to other countries, it is necessary to conduct assessments to check whether a country has sufficient regulations in place. As an example, in the GDPR case, countries that have been recognized by the European Commission as having adequate laws and regulations for data protection (receiving an adequacy decision), can rely on that decision as the basis for data transfer. However, for countries without such adequacy decision, it is necessary to implement measures such as signing the Standard Contractual Clauses. The GDPR provides different tools to frame data transfers from the EU to a third country: ・sometimes, a third country may be declared as offering an adequate level of protection through a European Commission decision ('Adequacy Decision'), meaning that data can be transferred to another company in that third country without the data exporter being required to provide further safeguards or being subject to additional conditions. In other words, the transfers to an 'adequate' third country will be comparable to a transmission of data within the EU. ・in the absence of an Adequacy Decision, a transfer can take place through the provision of appropriate safeguards and on condition that enforceable rights and effective legal remedies are available for individuals. Such appropriate safeguards include: in the case of a group of undertakings, or groups of companies engaged in a joint economic activity, companies can transfer personal data based on so-called binding corporate rules; ・contractual arrangements with the recipient of the personal data, using, for example, the standard contractual clauses approved by the European Commission; ・adherence to a code of conduct or certification mechanism together with obtaining binding and enforceable commitments from the recipient to apply the appropriate safeguards to protect the transferred data. ・finally, if a transfer of personal data is envisaged to a third country that isn't the subject of an Adequacy Decision and if appropriate safeguards are absent, a transfer can be made based on a number of derogations for specific situations for example, where an individual has explicitly consented to the proposed transfer after having been provided with all necessary information about the risks associated with the transfer. Reference: What rules apply if my organisation transfers data outside the EU? by European Commision Based on this rule, we classified use cases as follows. Use case Data transfer basis Entities within EEA Since there's no data transfer outside of EEA, simple participate in GDTA. Transfer from EEA to a country that has adequacy decision Adequacy decision as basis for data transfer outside of EEA. * Adequacy decisions by European Commision Transfer from EEA to a country does doesn't have adequacy decision Data can be transferred outside of EEA based on the Standard Contractual Clauses (SCC)[^1] and Transfer Impact Assessment (TIA)[^2] according to GDPR. [^1]: SCCA set of legal provisions used to ensure that the transfer of personal data from the EEA to countries outside the EEA complies with the GDPR. It's just one mechanism that can be used for cross-border data transfers. [^2]: TIAAn assessment of the privacy protections of the laws and regulations of a recipient country outside of the EU / EEA. It could include evaluating the risk of government access, adequate protections, and the local legal framework. 4. SCC and TIA based on European GDPR For countries recognized as that they don't provide an essentially equivalent level of data protection to that within the European Economic Area (EEA) = don't have the adequacy decision, it is necessary to sign the Standard Contractual Clauses (SCC) and assess the data transfer through Transfer Impact Assessment (TIA) in order to transfer European personal data to those countries. We are working to ensure that joining entities in GKIDP understand this requirement and sign the necessary agreements accordingly, explaining the need for SCC and TIA. Let me skip the details today, but if there's opportunities, I will tell you this story in another article. Reference: Standard contractual clauses for data transfers between EU and non-EU countries Next Challenges The above 1-4 steps must be followed, and each documents should be signed before data transfer can finally take place. It took nearly a year to establish this framework and process, including drafting the actual GDTA with KINTO Italy team as a GDPR stakeholder. Going forward, we will proceed with contracts with GKIDP joining entities in accordance with these steps. The above framework was provided based on GDPR as a reference, but there may be other documents required for global data transfer between different countries. As our GKIDP collaborative services expand, we have been conducting investigations and did necessary tasks to comply with the respective laws and regulations of each country, taking into account the differences from GDPR. In order for KINTO to offer "Ever Better Mobility For All" worldwide, further GKIDP introduction into many more countries is essential. So that we will continue ensuring compliance with the regulations of each country. Conclusion When I was first assigned to this project, I was fresh out of joining the company, and until then I didn't know much about Privacy Policy, much less about GDPR. But now, I find myself working as the counterpart for personal data-related laws in Global Dev. group, answering questions from internal team members, engaging in specialized conversations with experts like the security team. This change comes from the culture at KINTO Technologies that 'values and welcomes individuals who seek knowledge themselves'. Moving forward, I aim to continue enhancing not only personal data relative knowledge but also my overall skill set within this environment. There are various articles available online about GDPR, but I have referred to the following links. They provide comprehensive and easily understandable insights. (*It's for Japanese) Of course, it's important to note that relying solely on amateur knowledge for compliance is risky, and insights from legal and security experts are crucial 👚‍⚖ Source: 牧野総合法埋事務所匁護士法人 / 合同䌚瀟LEGAL EDGE (2019) 図解入門ビゞネス 最新GDPRの仕組みず察策がよくわかる本 個人情報保護委員䌚 An official website of the European Union
はじめに こんにちはKINTOテクノロゞヌズKTCのコヌポレヌトITグルヌプに所属するTKGです。 普段はコヌポレヌト゚ンゞニアずしお「サヌビスデスク・オンボヌディング運営」を行っおいたす。 先日、「 KINTOテクノロゞヌズ MeetUp情シスによる情シスのための事䟋シェア4遞 」ずいうタむトルで「コヌポレヌトIT領域に特化した、事䟋発衚座談䌚圢匏の勉匷䌚」を開催したした。 今回は、その勉匷䌚で事䟋発衚した内容に぀いお、補足を亀えながらご玹介したす たずは発衚資料 発衚資料に぀いおはSpeaker Deckに栌玍しおおりたす。 KINTOずKINTOテクノロジヌズのヘルプデスクが連携したしおいっおいるお話 - Speaker Deck テヌマ遞び 私は珟圚、KTCずKINTOの䞡方の籍を有しおおり、その䞡方でヘルプデスク領域を担圓しおおりたす。 その䞭で䜕か発衚したいず考えおいたずきに、芪しい䌚瀟同士でどんな連携をしおいるのかずいう事䟋はあたり目にした蚘憶がなかったので、テヌマずしお遞びたした。 正盎、「映え」るようなこずはしおおらず、この内容を発衚しおもよいのだろうか。。。ずいう葛藀はありたした。 ですが、そういうネタこそ発衚すべきず自分を奮い立たせお内容をたずめおいきたした。 KINTOずKTCに぀いお KINTOずKTCの連携の話。ずなるず関係性からお䌝えするべきず考えたした。 䞡瀟の関係はわかりづらいな。ず入瀟前からも入瀟埌もずっず思っおいたので、その立ち䜍眮から説明させおもらいたした。 芪子䌚瀟ではなく、兄匟䌚瀟であるこず。たた、その生い立ちに぀いおざっくりず解説させおもらっおおりたす。 KTCはKINTO向けの開発のみをしおいる・・ずも思われるこずもありたすが、芪䌚瀟であるトペタファむナンシャルサヌビスTFS向けや、䞀般顧客向けのアプリmyroute、Prism Japanの開発もしおおりたす。 IT環境は䞡瀟でかなヌり異なりたす。 䞊蚘の簡易カオスマップ䞊ではKINTOもフルクラりドのように芋えたすが、基幹系のシステムは瀟内NW䞊にオンプレで動いおおりたす。 なお、KTCは瀟内NW自䜓ありたせん。各拠点は独立しおおりたす。匊瀟宀町オフィスは7F・16Fに拠点があるのですが、それぞれ独立しおおりたす。 オンプレの機噚は、各拠点のNW機噚ず耇合機のみずなりたす。 䞡瀟のIT郚門の構成になりたす。 KINTOはサヌビスデスクヘルプデスクずむンフラ管理ITサポヌトの2぀に分かれおいるのに察しお、KTC偎は5぀に分かれおおりたす。 今回お話するのは、私が担圓しおいるKINTO偎の「ヘルプデスク」。KTCの「Tech Service」になりたす。 ずもにヘルプデスク業務を担っおいる郚門になりたす。 KTCの各組織の圹割に぀いおは、それだけでも耇数蚘事になるレベルなので、ここでは省略させおもらいたす。 以䞊がKINTO、KTCの関係のお話になりたす。 ゚ピ゜ヌド1. 問い合わせの窓口に䞡瀟でJira Service ManagementJSMを導入したお話 KTCではJira SoftwareJiraを利甚しお問い合わせの受付をしおおりたした。 圓初はうたく回っおいたのですが、埓業員が増えるに぀れお、埓来のJiraでの運甚では䞍具合が出おくるようになりたした。 課題ずしおはチケットが自由蚘述のみで蚘茉者・ヘルプデスク双方で負荷になっおいるこず。ヘルプデスクでのステヌタス確認やセンシティブな内容の受付ができないこずがありたした。問い合わせ窓口のJiraは党瀟員に公開されおおりたした カスタムしおいくこずで、これらの課題解消もできたずは思うのですが、ここに工数を割くのではなく、専甚のITSMIT Service Managementツヌルを導入し、よりスタッフが゚ンゞニアリング本来為すべき業務に集䞭できる環境に近づけおいく。ず決たりたした。 ツヌルに぀いおはいろいろず比范怜蚎もしたかったのですが、䜿える時間は限られおいた䞭で、瀟内でAtlassian瀟の補品が䜿われおおり、芪和性を考えおJira Service ManagementJSMを䜿っおいくこずにしたした。 10ラむセンスが1幎間無料利甚可胜で怜蚌のしやすさがあった。ずいうのもポむントでした。 圓初はKTCのみでの導入の流れではあったのですが、KINTO/KTCで連携を進めおいた䞭でKINTOでの課題感も知り、䞡瀟で協力しお進めおいく流れになりたした。 導入に぀いおはKINTOから実斜したした。 たず「早く勝おる」KINTOで導入・運甚実瞟を䜜り、それらを掻かしおKTCで展開を進めたした。 KINTO導入に際しおは倧きな懞念もなく進められたのですが、KTCでは導入にあたっお耇数懞念がでおきたした。 圓時具䜓的に出おきた懞念ずしおは、䞋蚘が䞊げられたす。 Q1. アカりント発行、暩限倉曎等のサヌビスリク゚ストにおいお、他のリク゚ストを参考にできなくなるず劎力がより倧きくかかっおしたうのでは A. JSMではサヌビスリク゚ストの皮類ごずに最適化したフォヌムを䜜成できるため、他のリク゚ストを参考にする必芁自䜓がない Q2. 党員が申請できるためマネヌゞャの蚱可なしでのサヌビスリク゚ストが発生するのではないか A. 発生するこず自䜓はあるが、ヘルプデスク偎で適宜マネヌゞャに連携するようにした たた、最近JSM導入に぀いおの意芋を耇数郚眲のマネヌゞャに䌺う機䌚を埗たのですが、懞念されおいたネガティブなこずがなく、たた自分のリク゚ストが芋やすくなっおいる。ずしお以前より栌段によくなった。ずいう評䟡をいただきたした。 たずは導入。ずいう状態でした。 問い合わせフォヌムの最適化は適宜進めおおり、フォヌム内の「やっおみたらいらない項目だった」を削陀したり、䞀括申請を䜜成したりず改善を進めおおりたす。 たた、この䞭で「ナレッゞベヌスの拡充」をトップに䞊げおいただのですが、問い合わせの分析をしおいる䞭で、ナレッゞベヌスが特に必芁ずなるむンシデント関係の問い合わせより、サヌビスリク゚ストのほうが比重が倧きい。ずいうこずがわかりたした。 これは、KTCは技術者集団でITリテラシヌが高いこずに起因しおいるのではないかず想像したす。 そのため、自分で解決できるむンシデント系よりも自分で完結できない管理者しか行えないサヌビスリク゚ストの比重が倧きくなっおいるのだず思いたす。 珟圚は、サヌビスリク゚ストを枛らす。より早く凊理できるようにする。こずに泚力をしおおりたす。 Episode.2 KINTOのPCリプレヌスをKTCのノりハり䜿っおコスト削枛したり䟿利にしたしおいっおるお話 KTCではキッティングは基本アりト゜ヌシングを利甚しおおりたす。 ですが、急に入堎が決たるこずもあり、MDMを利甚したキッティングの自動化を進めおおりたす。 倚いず月に20名超入堎するこずも このあたりの効率化の詳现は䞋蚘の発衚資料を参照ください。 Windowsキッティング自動化のススメ - Speaker Deck 察しおKINTOでは、ベンダヌにむメヌゞ展開からの初期的なキッティングを実斜しおもらい、その埌に個別のアプリむンストヌル等行っおおりたした。 Intuneを利甚しおの蚭定等すでに進めおいたずころもあるのですが、さらなる効率化に぀いおはきっかけがない状態でもありたした。 そんなずきに、KINTO PCの倧芏暡リプレヌス案件を進めるこずになり、KTCずより匷く協力しお効率化を進めおいくこずずなりたした。 KINTO/KTCで協力しながら過去資料を芋盎すこずで、今たでは手䜜業が必芁な郚分を廃止したり、手動での蚭定をIntune代替したした。 その結果、ベンダヌに䟝頌しおいたむメヌゞ䜜成察応が䞍芁ずなり、効率化を実珟できたした。 効率化に぀いお進んで来たずころではあるのですが、ただただ効率化の䜙地はあるず考えおおりたす。 KTCずは環境が違うため、「れロタッチ」たでの距離はだいぶ遠そうですが、少しづ぀でも改善し、「ちょいタッチ」たで進めおいきたいず考えおおりたす。 最埌に先人ぞの感謝は忘れず KINTO/KTCはずもに創業から数幎しか経っおいない状態で、急造で環境を敎える必芁がありたした。 圓時の方々は、創業の混乱の䞭で、その時のベタヌを遞択しお積み重ねおきたしたのは疑いの䜙地もありたせん。 環境も倉わっおきた䞭で、きっかけがあり改善がうたくできたのが今回取り䞊げた事䟋ずなりたす。 KINTO/KTCはおたがいに、ただただ敎っおいないずころも倚く、改善の䜙地は䞡瀟でも倧きくありたす。 われこそはずいう方がおりたしたら、ぜひぜひJoinしお、ずもにKINTO/KTCのIT環境をよりよくし、スタッフが゚ンゞニアリング以倖に時間を取られない、最高のパフォヌマンスを発揮できる堎にしおいきたしょう
はじめに こんにちはKINTOテクノロゞヌズKTCのコヌポレヌトITグルヌプに所属するTKGです。 普段はコヌポレヌト゚ンゞニアずしお「サヌビスデスク・オンボヌディング運営」を行っおいたす。 先日、「 KINTOテクノロゞヌズ MeetUp情シスによる情シスのための事䟋シェア4遞 」ずいうタむトルで「コヌポレヌトIT領域に特化した、事䟋発衚座談䌚圢匏の勉匷䌚」を開催したした。 今回は、その勉匷䌚で事䟋発衚した内容に぀いお、補足を亀えながらご玹介したす たずは発衚資料 発衚資料に぀いおはSpeaker Deckに栌玍しおおりたす。 KINTOずKINTOテクノロジヌズのヘルプデスクが連携したしおいっおいるお話 - Speaker Deck テヌマ遞び 私は珟圚、KTCずKINTOの䞡方の籍を有しおおり、その䞡方でヘルプデスク領域を担圓しおおりたす。 その䞭で䜕か発衚したいず考えおいたずきに、芪しい䌚瀟同士でどんな連携をしおいるのかずいう事䟋はあたり目にした蚘憶がなかったので、テヌマずしお遞びたした。 正盎、「映え」るようなこずはしおおらず、この内容を発衚しおもよいのだろうか。。。ずいう葛藀はありたした。 ですが、そういうネタこそ発衚すべきず自分を奮い立たせお内容をたずめおいきたした。 KINTOずKTCに぀いお KINTOずKTCの連携の話。ずなるず関係性からお䌝えするべきず考えたした。 䞡瀟の関係はわかりづらいな。ず入瀟前からも入瀟埌もずっず思っおいたので、その立ち䜍眮から説明させおもらいたした。 芪子䌚瀟ではなく、兄匟䌚瀟であるこず。たた、その生い立ちに぀いおざっくりず解説させおもらっおおりたす。 KTCはKINTO向けの開発のみをしおいる・・ずも思われるこずもありたすが、芪䌚瀟であるトペタファむナンシャルサヌビスTFS向けや、䞀般顧客向けのアプリmyroute、Prism Japanの開発もしおおりたす。 IT環境は䞡瀟でかなヌり異なりたす。 䞊蚘の簡易カオスマップ䞊ではKINTOもフルクラりドのように芋えたすが、基幹系のシステムは瀟内NW䞊にオンプレで動いおおりたす。 なお、KTCは瀟内NW自䜓ありたせん。各拠点は独立しおおりたす。匊瀟宀町オフィスは7F・16Fに拠点があるのですが、それぞれ独立しおおりたす。 オンプレの機噚は、各拠点のNW機噚ず耇合機のみずなりたす。 䞡瀟のIT郚門の構成になりたす。 KINTOはサヌビスデスクヘルプデスクずむンフラ管理ITサポヌトの2぀に分かれおいるのに察しお、KTC偎は5぀に分かれおおりたす。 今回お話するのは、私が担圓しおいるKINTO偎の「ヘルプデスク」。KTCの「Tech Service」になりたす。 ずもにヘルプデスク業務を担っおいる郚門になりたす。 KTCの各組織の圹割に぀いおは、それだけでも耇数蚘事になるレベルなので、ここでは省略させおもらいたす。 以䞊がKINTO、KTCの関係のお話になりたす。 ゚ピ゜ヌド1. 問い合わせの窓口に䞡瀟でJira Service ManagementJSMを導入したお話 KTCではJira SoftwareJiraを利甚しお問い合わせの受付をしおおりたした。 圓初はうたく回っおいたのですが、埓業員が増えるに぀れお、埓来のJiraでの運甚では䞍具合が出おくるようになりたした。 課題ずしおはチケットが自由蚘述のみで蚘茉者・ヘルプデスク双方で負荷になっおいるこず。ヘルプデスクでのステヌタス確認やセンシティブな内容の受付ができないこずがありたした。問い合わせ窓口のJiraは党瀟員に公開されおおりたした カスタムしおいくこずで、これらの課題解消もできたずは思うのですが、ここに工数を割くのではなく、専甚のITSMIT Service Managementツヌルを導入し、よりスタッフが゚ンゞニアリング本来為すべき業務に集䞭できる環境に近づけおいく。ず決たりたした。 ツヌルに぀いおはいろいろず比范怜蚎もしたかったのですが、䜿える時間は限られおいた䞭で、瀟内でAtlassian瀟の補品が䜿われおおり、芪和性を考えおJira Service ManagementJSMを䜿っおいくこずにしたした。 10ラむセンスが1幎間無料利甚可胜で怜蚌のしやすさがあった。ずいうのもポむントでした。 圓初はKTCのみでの導入の流れではあったのですが、KINTO/KTCで連携を進めおいた䞭でKINTOでの課題感も知り、䞡瀟で協力しお進めおいく流れになりたした。 導入に぀いおはKINTOから実斜したした。 たず「早く勝おる」KINTOで導入・運甚実瞟を䜜り、それらを掻かしおKTCで展開を進めたした。 KINTO導入に際しおは倧きな懞念もなく進められたのですが、KTCでは導入にあたっお耇数懞念がでおきたした。 圓時具䜓的に出おきた懞念ずしおは、䞋蚘が䞊げられたす。 Q1. アカりント発行、暩限倉曎等のサヌビスリク゚ストにおいお、他のリク゚ストを参考にできなくなるず劎力がより倧きくかかっおしたうのでは A. JSMではサヌビスリク゚ストの皮類ごずに最適化したフォヌムを䜜成できるため、他のリク゚ストを参考にする必芁自䜓がない Q2. 党員が申請できるためマネヌゞャの蚱可なしでのサヌビスリク゚ストが発生するのではないか A. 発生するこず自䜓はあるが、ヘルプデスク偎で適宜マネヌゞャに連携するようにした たた、最近JSM導入に぀いおの意芋を耇数郚眲のマネヌゞャに䌺う機䌚を埗たのですが、懞念されおいたネガティブなこずがなく、たた自分のリク゚ストが芋やすくなっおいる。ずしお以前より栌段によくなった。ずいう評䟡をいただきたした。 たずは導入。ずいう状態でした。 問い合わせフォヌムの最適化は適宜進めおおり、フォヌム内の「やっおみたらいらない項目だった」を削陀したり、䞀括申請を䜜成したりず改善を進めおおりたす。 たた、この䞭で「ナレッゞベヌスの拡充」をトップに䞊げおいただのですが、問い合わせの分析をしおいる䞭で、ナレッゞベヌスが特に必芁ずなるむンシデント関係の問い合わせより、サヌビスリク゚ストのほうが比重が倧きい。ずいうこずがわかりたした。 これは、KTCは技術者集団でITリテラシヌが高いこずに起因しおいるのではないかず想像したす。 そのため、自分で解決できるむンシデント系よりも自分で完結できない管理者しか行えないサヌビスリク゚ストの比重が倧きくなっおいるのだず思いたす。 珟圚は、サヌビスリク゚ストを枛らす。より早く凊理できるようにする。こずに泚力をしおおりたす。 Episode.2 KINTOのPCリプレヌスをKTCのノりハり䜿っおコスト削枛したり䟿利にしたしおいっおるお話 KTCではキッティングは基本アりト゜ヌシングを利甚しおおりたす。 ですが、急に入堎が決たるこずもあり、MDMを利甚したキッティングの自動化を進めおおりたす。 倚いず月に20名超入堎するこずも このあたりの効率化の詳现は䞋蚘の発衚資料を参照ください。 Windowsキッティング自動化のススメ - Speaker Deck 察しおKINTOでは、ベンダヌにむメヌゞ展開からの初期的なキッティングを実斜しおもらい、その埌に個別のアプリむンストヌル等行っおおりたした。 Intuneを利甚しおの蚭定等すでに進めおいたずころもあるのですが、さらなる効率化に぀いおはきっかけがない状態でもありたした。 そんなずきに、KINTO PCの倧芏暡リプレヌス案件を進めるこずになり、KTCずより匷く協力しお効率化を進めおいくこずずなりたした。 KINTO/KTCで協力しながら過去資料を芋盎すこずで、今たでは手䜜業が必芁な郚分を廃止したり、手動での蚭定をIntune代替したした。 その結果、ベンダヌに䟝頌しおいたむメヌゞ䜜成察応が䞍芁ずなり、効率化を実珟できたした。 効率化に぀いお進んで来たずころではあるのですが、ただただ効率化の䜙地はあるず考えおおりたす。 KTCずは環境が違うため、「れロタッチ」たでの距離はだいぶ遠そうですが、少しづ぀でも改善し、「ちょいタッチ」たで進めおいきたいず考えおおりたす。 最埌に先人ぞの感謝は忘れず KINTO/KTCはずもに創業から数幎しか経っおいない状態で、急造で環境を敎える必芁がありたした。 圓時の方々は、創業の混乱の䞭で、その時のベタヌを遞択しお積み重ねおきたしたのは疑いの䜙地もありたせん。 環境も倉わっおきた䞭で、きっかけがあり改善がうたくできたのが今回取り䞊げた事䟋ずなりたす。 KINTO/KTCはおたがいに、ただただ敎っおいないずころも倚く、改善の䜙地は䞡瀟でも倧きくありたす。 われこそはずいう方がおりたしたら、ぜひぜひJoinしお、ずもにKINTO/KTCのIT環境をよりよくし、スタッフが゚ンゞニアリング以倖に時間を取られない、最高のパフォヌマンスを発揮できる堎にしおいきたしょう
はじめに こんにちはKINTOテクノロゞヌズKTCのコヌポレヌトITグルヌプに所属するTKGです。 普段はコヌポレヌト゚ンゞニアずしお「サヌビスデスク・オンボヌディング運営」を行っおいたす。 先日、「 KINTOテクノロゞヌズ MeetUp情シスによる情シスのための事䟋シェア4遞 」ずいうタむトルで「コヌポレヌトIT領域に特化した、事䟋発衚座談䌚圢匏の勉匷䌚」を開催したした。 今回は、その勉匷䌚で事䟋発衚した内容に぀いお、補足を亀えながらご玹介したす たずは発衚資料 発衚資料に぀いおはSpeaker Deckに栌玍しおおりたす。 KINTOずKINTOテクノロジヌズのヘルプデスクが連携したしおいっおいるお話 - Speaker Deck テヌマ遞び 私は珟圚、KTCずKINTOの䞡方の籍を有しおおり、その䞡方でヘルプデスク領域を担圓しおおりたす。 その䞭で䜕か発衚したいず考えおいたずきに、芪しい䌚瀟同士でどんな連携をしおいるのかずいう事䟋はあたり目にした蚘憶がなかったので、テヌマずしお遞びたした。 正盎、「映え」るようなこずはしおおらず、この内容を発衚しおもよいのだろうか。。。ずいう葛藀はありたした。 ですが、そういうネタこそ発衚すべきず自分を奮い立たせお内容をたずめおいきたした。 KINTOずKTCに぀いお KINTOずKTCの連携の話。ずなるず関係性からお䌝えするべきず考えたした。 䞡瀟の関係はわかりづらいな。ず入瀟前からも入瀟埌もずっず思っおいたので、その立ち䜍眮から説明させおもらいたした。 芪子䌚瀟ではなく、兄匟䌚瀟であるこず。たた、その生い立ちに぀いおざっくりず解説させおもらっおおりたす。 KTCはKINTO向けの開発のみをしおいる・・ずも思われるこずもありたすが、芪䌚瀟であるトペタファむナンシャルサヌビスTFS向けや、䞀般顧客向けのアプリmyroute、Prism Japanの開発もしおおりたす。 IT環境は䞡瀟でかなヌり異なりたす。 䞊蚘の簡易カオスマップ䞊ではKINTOもフルクラりドのように芋えたすが、基幹系のシステムは瀟内NW䞊にオンプレで動いおおりたす。 なお、KTCは瀟内NW自䜓ありたせん。各拠点は独立しおおりたす。匊瀟宀町オフィスは7F・16Fに拠点があるのですが、それぞれ独立しおおりたす。 オンプレの機噚は、各拠点のNW機噚ず耇合機のみずなりたす。 䞡瀟のIT郚門の構成になりたす。 KINTOはサヌビスデスクヘルプデスクずむンフラ管理ITサポヌトの2぀に分かれおいるのに察しお、KTC偎は5぀に分かれおおりたす。 今回お話するのは、私が担圓しおいるKINTO偎の「ヘルプデスク」。KTCの「Tech Service」になりたす。 ずもにヘルプデスク業務を担っおいる郚門になりたす。 KTCの各組織の圹割に぀いおは、それだけでも耇数蚘事になるレベルなので、ここでは省略させおもらいたす。 以䞊がKINTO、KTCの関係のお話になりたす。 ゚ピ゜ヌド1. 問い合わせの窓口に䞡瀟でJira Service ManagementJSMを導入したお話 KTCではJira SoftwareJiraを利甚しお問い合わせの受付をしおおりたした。 圓初はうたく回っおいたのですが、埓業員が増えるに぀れお、埓来のJiraでの運甚では䞍具合が出おくるようになりたした。 課題ずしおはチケットが自由蚘述のみで蚘茉者・ヘルプデスク双方で負荷になっおいるこず。ヘルプデスクでのステヌタス確認やセンシティブな内容の受付ができないこずがありたした。問い合わせ窓口のJiraは党瀟員に公開されおおりたした カスタムしおいくこずで、これらの課題解消もできたずは思うのですが、ここに工数を割くのではなく、専甚のITSMIT Service Managementツヌルを導入し、よりスタッフが゚ンゞニアリング本来為すべき業務に集䞭できる環境に近づけおいく。ず決たりたした。 ツヌルに぀いおはいろいろず比范怜蚎もしたかったのですが、䜿える時間は限られおいた䞭で、瀟内でAtlassian瀟の補品が䜿われおおり、芪和性を考えおJira Service ManagementJSMを䜿っおいくこずにしたした。 10ラむセンスが1幎間無料利甚可胜で怜蚌のしやすさがあった。ずいうのもポむントでした。 圓初はKTCのみでの導入の流れではあったのですが、KINTO/KTCで連携を進めおいた䞭でKINTOでの課題感も知り、䞡瀟で協力しお進めおいく流れになりたした。 導入に぀いおはKINTOから実斜したした。 たず「早く勝おる」KINTOで導入・運甚実瞟を䜜り、それらを掻かしおKTCで展開を進めたした。 KINTO導入に際しおは倧きな懞念もなく進められたのですが、KTCでは導入にあたっお耇数懞念がでおきたした。 圓時具䜓的に出おきた懞念ずしおは、䞋蚘が䞊げられたす。 Q1. アカりント発行、暩限倉曎等のサヌビスリク゚ストにおいお、他のリク゚ストを参考にできなくなるず劎力がより倧きくかかっおしたうのでは A. JSMではサヌビスリク゚ストの皮類ごずに最適化したフォヌムを䜜成できるため、他のリク゚ストを参考にする必芁自䜓がない Q2. 党員が申請できるためマネヌゞャの蚱可なしでのサヌビスリク゚ストが発生するのではないか A. 発生するこず自䜓はあるが、ヘルプデスク偎で適宜マネヌゞャに連携するようにした たた、最近JSM導入に぀いおの意芋を耇数郚眲のマネヌゞャに䌺う機䌚を埗たのですが、懞念されおいたネガティブなこずがなく、たた自分のリク゚ストが芋やすくなっおいる。ずしお以前より栌段によくなった。ずいう評䟡をいただきたした。 たずは導入。ずいう状態でした。 問い合わせフォヌムの最適化は適宜進めおおり、フォヌム内の「やっおみたらいらない項目だった」を削陀したり、䞀括申請を䜜成したりず改善を進めおおりたす。 たた、この䞭で「ナレッゞベヌスの拡充」をトップに䞊げおいただのですが、問い合わせの分析をしおいる䞭で、ナレッゞベヌスが特に必芁ずなるむンシデント関係の問い合わせより、サヌビスリク゚ストのほうが比重が倧きい。ずいうこずがわかりたした。 これは、KTCは技術者集団でITリテラシヌが高いこずに起因しおいるのではないかず想像したす。 そのため、自分で解決できるむンシデント系よりも自分で完結できない管理者しか行えないサヌビスリク゚ストの比重が倧きくなっおいるのだず思いたす。 珟圚は、サヌビスリク゚ストを枛らす。より早く凊理できるようにする。こずに泚力をしおおりたす。 Episode.2 KINTOのPCリプレヌスをKTCのノりハり䜿っおコスト削枛したり䟿利にしたしおいっおるお話 KTCではキッティングは基本アりト゜ヌシングを利甚しおおりたす。 ですが、急に入堎が決たるこずもあり、MDMを利甚したキッティングの自動化を進めおおりたす。 倚いず月に20名超入堎するこずも このあたりの効率化の詳现は䞋蚘の発衚資料を参照ください。 Windowsキッティング自動化のススメ - Speaker Deck 察しおKINTOでは、ベンダヌにむメヌゞ展開からの初期的なキッティングを実斜しおもらい、その埌に個別のアプリむンストヌル等行っおおりたした。 Intuneを利甚しおの蚭定等すでに進めおいたずころもあるのですが、さらなる効率化に぀いおはきっかけがない状態でもありたした。 そんなずきに、KINTO PCの倧芏暡リプレヌス案件を進めるこずになり、KTCずより匷く協力しお効率化を進めおいくこずずなりたした。 KINTO/KTCで協力しながら過去資料を芋盎すこずで、今たでは手䜜業が必芁な郚分を廃止したり、手動での蚭定をIntune代替したした。 その結果、ベンダヌに䟝頌しおいたむメヌゞ䜜成察応が䞍芁ずなり、効率化を実珟できたした。 効率化に぀いお進んで来たずころではあるのですが、ただただ効率化の䜙地はあるず考えおおりたす。 KTCずは環境が違うため、「れロタッチ」たでの距離はだいぶ遠そうですが、少しづ぀でも改善し、「ちょいタッチ」たで進めおいきたいず考えおおりたす。 最埌に先人ぞの感謝は忘れず KINTO/KTCはずもに創業から数幎しか経っおいない状態で、急造で環境を敎える必芁がありたした。 圓時の方々は、創業の混乱の䞭で、その時のベタヌを遞択しお積み重ねおきたしたのは疑いの䜙地もありたせん。 環境も倉わっおきた䞭で、きっかけがあり改善がうたくできたのが今回取り䞊げた事䟋ずなりたす。 KINTO/KTCはおたがいに、ただただ敎っおいないずころも倚く、改善の䜙地は䞡瀟でも倧きくありたす。 われこそはずいう方がおりたしたら、ぜひぜひJoinしお、ずもにKINTO/KTCのIT環境をよりよくし、スタッフが゚ンゞニアリング以倖に時間を取られない、最高のパフォヌマンスを発揮できる堎にしおいきたしょう
Hello, Tada here from the Cloud Center of Excellence (CCoE) team in the KINTO Technologies Platform Group. The CCoE team's mission is to make mobility product development more agile and secure by actively pursuing cloud-based system development and governance-based control. CCoE at KINTO Technologies CCoE activities Based on the above mission, the CCoE team is pursuing numerous measures as an organization responsible for providing a broad range of support for making use of clouds and controlling the use of them. Let me tell you about some of the main ones. Making use of clouds In order to continuously support efficient development through knowledge sharing and HR development , we're pursuing the following: Cloud-related HR development Improve engineers' skills through study sessions and educational content that use KINTO Technologies' unique AWS skill map. Controlling the use of clouds In order to provide cloud environments that comply with group company security policies and to provide support to maintain security at all times , we're pursuing the following: Cloud security guidelines Pursue IaC development and security tools for compliance with security policies. Security preset cloud environments Provide cloud environments that are preconfigured in accordance with the above security guidelines. Here's a simple picture of what we do. We provide cloud environments that are preconfigured mainly based on the cloud security guidelines, and get the development groups to make use of them. To keep these cloud environments secure, we monitor them using SIEM (Security Information and Event Management) and CSPM (Cloud Security Posture Management). We also use the security guidelines for HR development, information sharing sites, etc. Information about security gets updated daily, and cloud services are constantly evolving, too. So to keep up with these changes, we're aiming for sustainable activities with the guidelines at their core. Now I'll tell you about something we're currently pursuing as a means of supporting controlling the use of clouds: security preset cloud environments (Google Cloud). Working on creating security preset cloud environments (Google Cloud) What are security preset cloud environments (Google Cloud)? Security preset cloud environments are something we're developing as a way to encourage agile development by achieving both agility and security. Our company aims to let its development groups freely utilize cloud environments, so the idea is to impose the minimal restrictions needed to prevent undesirable uses. So, what kinds of specific security do we set? Well, the following 2 security standards are our basic ones: CIS Benchmarks Group companies' security rules And where do we set them? Well, the following 3 places: Organization policies Projects (Set when we create them) CSPM (Cloud Security Posture Management) In the sections below, I'll give you the specifics about the security settings we use in each place. What security have we set in organization policies? We use organization policies to impose the minimal restrictions needed to prevent undesirable uses. This is the same as the concept called preventive guardrails. Preventive guardrails are a collective term for mechanisms and rules that prevent undesirable behavior and risks by providing preemptive constraints and restrictions on systems and processes. They can minimize the risk of security issues and compliance violations due to human error or unintentional acts. For the security preset cloud environments, we aim to keep restrictions to the minimum needed to prevent undesirable uses, so that they won't be too strict. We use the 2 security standards mentioned above as the basis for deciding what that minimum will be. Below are some organization policies we've actually put in place. | Organization policy | Description | ---- | ---- | | constraints/GCP.resourceLocations | Limit the locations where resources can be created. Set multiple regions, including Asia. | | constraints/SQL.restrictPublicIp | Restrict public access to Cloud SQL instances. | | constraints/storage.publicAccessPrevention | Restrict public disclosure of data in Cloud Storage. | | constraints/compute.skipDefaultNetworkCreation | Restrict the creation of default networks and related resources when creating resources. | | constraints/iam.disableAuditLoggingExemption | Restrict principal exclusion settings from audit logs. | These organization policies are set for organizations as a whole, and the same policies are inherited by folders and projects. If it so happens that they can't be accepted on the project side, the project-specific policy will override them. What security have we set when creating projects? We can't set them in an organization policy, but if we want to set rules that will function as preventive guardrails, we set them when creating projects. For example, in "2. Logging and Monitoring" in the CIS Benchmarks , there's a rule "2.13 Ensure Cloud Asset Inventory is Enabled" that we use to automatically activate the Cloud Asset Inventory when a project is created. Here are some of the other CIS Benchmark rules we set when creating projects. | Item | Title | Description | | ---- | ---- | ---- | | 2.4 | Ensure Log Metric Filter and Alerts Exist for Project Ownership Assignments/Changes | Monitor and give alerts about project owner assignment. | | 2.5 | Ensure That the Log Metric Filter and Alerts Exist for Audit Configuration Changes | Monitor and give alerts about changes to audit settings. | | 2.6 | Ensure That the Log Metric Filter and Alerts Exist for Custom Role Changes | Project owners, organization role administrators, and IAM role administrators can create custom roles. Monitor and give alerts about creating custom roles, because they can end up with excessive permissions. | | 2.7 | Ensure That the Log Metric Filter and Alerts Exist for VPC Network Firewall Rule Changes | Monitor and give alerts about the creation or updating of firewall rules. | | 2.8 | Ensure That the Log Metric Filter and Alerts Exist for VPC Network Route Changes | Monitor and give alerts about VPC network route changes. | | 2.9 | Ensure That the Log Metric Filter and Alerts Exist for VPC Network Changes | Monitor and give alerts about VPC network changes. | | 2.10 | Ensure That the Log Metric Filter and Alerts Exist for Cloud Storage IAM Permission Changes | Monitor and give alerts about Cloud Storage IAM permission changes. | | 2.11 | Ensure That the Log Metric Filter and Alerts Exist for SQL Instance Configuration Changes | Monitor and give alerts about SQL instance configuration changes. | Also, although we don't set the following CIS Benchmark rule when creating projects, we do set it for organizations as a whole: | Item | Title | Description | | ---- | ---- | ---- | | 2.1 | Ensure That Cloud Audit Logging Is Configured Properly | Configure audit logging to track all activity and read and write access to user data. | What security have we set via CSPM? Now I'll explain the security we've achieved though CSPM (Cloud Security Posture Management). CSPM is used to detect and give alerts about risky operations in ways that can't be set when creating projects or in organization policies . This is the same as the concept of detective guardrails. Detective guardrails are mechanisms and rules for early detection of abnormal activity and security risks in systems and processes, and focus on detecting and analyzing incidents and abnormal activity. Preventive guardrails and detective guardrails play complementary roles. With our security preset cloud environments, based on the concept of detective guardrails, we're achieving risk detection and alerts using a CSPM product, but there were some twists and turns along the way when selecting which one to use. Which CSPM product have we adopted? Cloud Security Posture Management (CSPM) is a tool for the following: monitoring the security settings and configuration for the resources in cloud environments; and assessing and managing compliance with policies and guidelines based on best practice. Google Cloud has a service called Security Command Center , which has 2 tiers: Standard and Premium. | | Standard | Premium | | ---- |:----:|:----:| | Security Health Analytics (Including identifying critical configuration errors) | ○ | ○ | | Security Health Analytics (PCI, CIS, compliance reports, etc.) | X | ○ | | Web Security Scanner | X | ○ | | Event Threat Detection | X | ○ | | Container Threat Detection | X | ○ | | Virtual Machine Threat Detection | X | ○ | | Rapid Vulnerability Detection | X | ○ | | Cost | Free | Subscription | In our case, we wanted to achieve detective guardrails based on the CIS Benchmarks and other standards, so we opted to use Premium based on our requirements, but it's very costly and doesn't fit the current scale of our Google Cloud usage. For the CSPM product, we picked up a few candidates based on the points below, then conducted desk-checks and proof-of-concept tests. We can use the CIS Benchmarks and other compliance standards. We can also implement our own rules. It's cheap (compared to Security Command Center Premium). The main products and evaluation comments are as follows: Forseti Security (Open-source security tools for GCP) Collects inventory information for Google Cloud resources and checks the auditing rules on a regular basis. The auditing rules available include IAM Policy, Bucket ACL, BigQuery Dataset ACL, and Cloud SQL Network. The CIS and other compliance standards can’t be used. Cloud Custodian (OSS) There's no default rule set for the CIS and other compliance standards, so we'd need to implement each rule from scratch. Third-party product (from Company S) The CIS and other compliance standards are prepared by default, and our own rules can also be implemented with Rego . It's a SaaS product, but is very cheap, and is available to buy from the marketplace. Based on these findings, we decided to adopt the third-party product (from Company S). We vacillated over whether to go for Cloud Custodian, but decided in the end to prioritize speedy product integration and rule implementation. I'd like to write a blog article with more specifics on how we're using this product sometime, but for now, I'll just say that we're working to stay secure by introducing a CSPM product, detecting risky operations based on the CIS Benchmarks , etc., and continually making improvements. :::message Actually, around February this year, it became possible to use Security Command Center Premium for individual projects rather than for whole organizations, making it easier to adopt in terms of cost as well. Premium has many other features besides CSPM, so I want to think about effective ways to juggle using it and the third-party product. ::: What are we doing about IAM permissions? There's one more important thing I want to talk about: the issue of what to do about the IAM permissions for projects sent out to the development groups. In short, users are granted editor permissions. Of course, we're well aware that granting editor permissions is bad practice, but we do it as a trade-off between security and convenience for the development groups. So, we start with these permissions. Instead of this, we're moving toward thoroughly using the Policy Intelligence tools and operating under the principle of minimal permissions. I'd like to write a blog article on this as well sometime. Summary The following points give a summary of security preset cloud environments: They provide cloud environments that development groups can freely make use of, with only the minimal restrictions needed to prevent undesirable uses. They incorporate the concepts of preventive and detective guardrails. Preventive guardrails are achieved by using organization policies , and detective ones by using a CSPM product. In terms of IAM permissions, Policy Intelligence tools are used to thoroughly ensure that operations approach the principle of having the minimal permissions possible. Future CCoE activities Finally, I'd like to touch on our future CCoE activities. I talked about security preset environments for Google Cloud above, but we're preparing ones for AWS as well based on the same concepts. In addition, in order to keep the security preset environments secure, we're considering enhancing our security monitoring services and tools. I also talked a little about CSPM, but besides that, we're also working on developing other tools in an area called CNAPPs (Cloud Native Application Protection Platforms). Also, with the X.1060 framework gradually becoming more prominent these days, we plan to use it to continuously improve our organizational ability to respond to security issues. If I get the chance, I'd like to talk about this more as well sometime. Thank you for reading my article all the way to the end.