Note: Woven Planet became Woven by Toyota on April 1, 2023.
Toyota announced its project “Woven City” at CES, the largest technology trade show in the world, back in 2020. The mission of Woven City is “Building the Future Fabric of Life in a City as a Test Course for Mobility.” where people actually live, test and invent new services and systems together with residents in a wide range of mobility areas. The “ Test Course” is equipped with the latest connectivity features that will enhance the lives of the next generation. With the opening planned between 2024–2025, construction is currently underway in Susono City in Shizuoka Prefecture, located at the foot of Mount Fuji.
Woven Planet Holdings (Woven Planet), a subsidiary of Toyota, will play a central role in the development of the city. On April 22, 2022, the company held a tech meetup, “Woven City Tech Meetup — Cloud.”
“Woven City”, where people are “Moved”
Before diving into the main sessions, the host, Hunter Chen who is a backend services engineer at Woven Planet, gave a brief overview of the futuristic city.
Chen describes the city’s purpose as “Well-being for all.” The city serves as a test course for new technologies that the company wants to build and test, with a vision of expanding it to the greater society. Woven City will embody the future lifestyle of society. In his introduction, Chen emphasized the word “mobility.”
“The word ‘mobility’ focuses on the word ’Move’ and a lot of people imagine that to be something physical. But we think it can be more than that. ’Move’ can also apply to your feelings. When you look at the city, enter the city, walk through the city, we want you to feel moved..” (Hunter Chen)
With a site area of about 50,000 square meters, the city will house around 360 residents in its initial phase, with an expectancy of 2,000 in the future. The residents come from a diverse set of backgrounds, from families raising children to seniors and inventors (entrepreneurs and researchers).
With these residents as its first users, the city will test a total of 12 areas of technology and services, including mobility (automated driving), energy (carbon neutral), logistics (robotics), food and agriculture, which will all be embodied in the lifestyle of Woven City.
Tech Talk: “Architectural Decision — Think outside the box”
Following Chen’s opening talk, Stephen Shum took the stage. He spoke about the architectural decisions and the importance of thinking outside the box.
Shum is the technical lead for Woven Planet’s Lifestyle Services Product team. He started his career as a Java engineer almost 20 years ago and has worked globally in Australia and Hong Kong. His current focus is on system design architecture.
Given that it was a Friday evening, Shum posed a warm-up challenge to the audience. The problem statement was, “to build a system that allows devices around the city to talk to each other.” Devices here include both public and home devices, and the company’s IT strategy is “Cloud First,” he explained.
Q. Where should the system be hosted in this case?
Public Cloud Provider
Local Data Center
Hybrid of public cloud and local data centers
The audience was split between A and B. There is a possibility that Woven City chose the third option, a hybrid of public cloud and local data centers. Shum explained that following the company’s strategy of Cloud First is only the beginning and is merely “doing your job.” The architectural decision should take into account things such as non-functional requirements, application latency, high availability, and disaster recovery.
Shum laid out specific challenges they face for Woven City’s architectural design, “How do we share the right information, with the right people, at the right time? How do we balance user privacy and data usage? How do we do authentication and authorization when so many people use so many applications?”
In Woven City these are yet to be revealed, new challenges and issues arise every day. With future changes to come, the team is determined to build a system with scalability that can handle huge traffic as well as the flexibility to deploy the system in other locations. Chen stressed the importance of thinking outside the box.
“A cloud solution is not a silver bullet. At minimum, you need to meet the functional and non-functional requirements, but no matter what you do, you need to fulfill or even exceed your business goal. Remember that there is no such thing as free lunch, and everything has a tradeoff. In particular, be aware of the tradeoffs between money and time.” (Shum)
Q&A about Woven City’s system architecture
Chen joined the stage with Shum to take questions from the audience. The following is a brief summary.
Shum stuck to a simple answer when asked about the priority of multiple architectural considerations. “The top priority is the business goal,” he states. While there is an obvious need to consider technical issues, functional and non-functional requirements, at the end of the day, you are building a system to solve a business problem.
When asked about what roles system security and reliability play in system architecture, Shum explained that they use microservices to segregate systems as much as possible. He noted that it is dangerous to assume that all systems including your own will be up and running 100% of the time, and microservices architecture can prevent collateral damage.
In response to “common mistakes people tend to make in architectural design,” Shum cited a lack of consideration of non-functional requirements such as latency and execution time. One way to address this problem is to build and test small by taking an agile approach.
“The best way to cater to this particular problem is to consider all requirements but also to test the PoC (Proof of Concept) from the get-go. This way, you can avoid building a system that is too slow, and you also end up saving time and money.” (Stephen Shum)
Recalling his own experience, Chen advised the audience not to overcomplicate the architecture. “It is important to make the design flexible at the beginning and build on it instead of overthinking it,” he said.
Building a flexible system that can adapt to change
After a short break, the second speaker of the night was introduced to the stage. Rie Ono is a member of Woven Planet’s Payments Solutions Team and is responsible for developing the city’s independent payment system. She gave a talk titled “Woven City’s Payment Infrastructure — System Architecture of Payment System with Server-Side Kotlin”.
Ono, who joined the Payments Solutions Team in December 2021, has worked primarily for Japanese web search and e-commerce companies in the past. She has experience as a tech lead for backend services, frontend/backend developer, and product manager for native applications, but is new to payment systems.
The mission of the Payments Solutions Team is “to increase the value of the city by providing payment systems.” Since economic activity is the foundation of the city, it requires an infrastructure that is easy to use, safe, and sustainable. They also need to develop an interface that connects buyers, sellers, and inventors.
To build a highly available system, the payment system uses a microservices architecture. By combining small, individually developed services, the system can prevent collapses due to system failures and will be scalable for the future.
“Woven City is not yet on the market, so there is a chance that the business and system might change dramatically in the future. By adopting a microservices architecture, we want our system to be able to cope with upcoming changes.” (Rie Ono)
A city of challenge pushes us to rise to the challenge in more ways
The Payments Solutions Team uses EventStorming to design its microservices and data models. By clarifying the workflow, it becomes easier for everyone to understand it, regardless of their level of experience. Another benefit of EventStorming is that the knowledge can be shared with all participants at once. The downside is that it can be time consuming and is probably easier to use in person rather than remotely.
The Payments Solutions Team’s technology stack includes Kotlin and Ktor. Kotlin was a challenging choice, since everyone on the team has Java coding experience. The team uses Gradle for package management, JUnit5 and JaCoCo for unit test and measuring coverage, and OpenAPI generator to create data objects. Ono also said that “Woven City” is a city of challenge. So we decided to use Kotlin for our products to challenge ourselves.”
Last but not least, Ono shared the advantages and disadvantages of developing in Kotlin. In the Payments Solutions Team, most of the team members use Intellij for development and Ktor for the server application framework which are advantages for the team.The Payments Solutions Team will continue to pursue technical challenges, such as running the application on Kubernetes.
Q&A about the payment system
Chen joined Ono on the stage to take questions from the audience.
The meetup’s online audience had several questions about the international compatibility of Woven City’s payment system: Will it rely on Japan-specific hardware such as Felica, or will it be compatible with global smartphone brands as well?
Woven City wants to create a flexible payment system that is open to a variety of devices as well as technologies including but not limited to QR codes, Felica, and NFC. Although the system is intended for global use, it will first be used within Japan.
As for the reason for developing their own payment system instead of using an existing one, Ono explained, “In the demonstration of each service to be carried out in Woven City, it is necessary to provide functions related to payments and the appropriate management of the data.” Furthermore, it would be available to visitors who want to try out the payment system by creating guest accounts.
When asked about the difficulties the team faced when migrating from Java to Kotlin, Ono cited the lack of resources for learning server-side Kotlin. Chen, who is involved in CI/CD pipeline, build development and tooling, pointed out the differences around tools and the difficulty of synchronizing builds between Java and Kotlin.
“With build tools like Maven and Gradle, you have to search and manage dependencies yourself. But Kotlin is much easier in that respect. Java’s maturity in the system these days relies on annotations and the magic that goes behind-the-scenes. Things like Maven and Gradle automates that. On the other hand, it’s hard to manage and control on your own.” (Hunter Chen)
While the Payment Solution Team uses Kotlin for the backend, each team at Woven City utilizes a language that they are more familiar and efficient with. Popular languages within the city are Golang, Java, and Kotlin, with some use of Node and Rust as well.
At the end of the meetup, Chen told the audience about Woven Planet’s hiring opportunities. To date, there are more than 100 positions available with over 40 percent of them being engineering positions.
Lifestyle Services and Products Team, led by Stephen Shum, is hiring for almost all positions: front-end engineers, machine learning engineers, data engineers, machine learning pipeline engineers, backend engineers, and test/automation engineers. The Payments Solutions Team is looking for backend and software engineers.
The company also plans to offer internships for the first time. Learn more about Woven Planet’s careers opportunities including Woven City here.