Must-see server engineers!What is the new web3 service server technology created by Go and Kotlin?cocone Tech Talk Vol.6 Event Report
※This article is machine translated.
Back-end integration with blockchain
cocone TECH TALK is a lightning talk event by Cocone’s on-site engineers. This is a place for engineers to organize and output technical topics they have learned through projects they are in charge of.
This year’s sixth edition will feature three themes focused on servers (back end).
- Real-time competition x Back-end architecture
- Development of cooperation with Cocone Group’s blockchain MOOI
- Kotlin Backend Architecture of Avatar Service
The presenter is a member of the development team of three web services (to be released in winter 2022) operated by the company.
We talked about what we realized and the difficulties we faced as we struggled to develop and release the product for the first time.
*We will not provide a detailed introduction to the technical aspects of the project here.
We have also included a link to a related article on our tech blog ” cocone engineering “
1. Real-time competition x backend architecture
We will introduce the techniques used to achieve real-time competition at “JANKEN”, the techniques adopted, and the difficult points.
Reference article: Making JANKEN a worldwide entertainment
communication technology adopted by
The initial adoption of gRPC Bidirectional Streaming RPC.
At this point, the game system had not been finalized, so we chose bi-directional communication as a safe choice, and because other APIs were using gRPC.
However, as development progressed, development costs increased!
Problems such as increased complexity of code and testing, and many client/server arrangements become apparent.
After much trial and error, we finally settled on gRPC Unary RPC + Server Streaming RPC.
Basically, since Unary RPC is used, the flow is simplified and the usual implementation and testing techniques can be used.
Difficult points were load measures and PubSub
The following four points were difficult for us as we proceeded with the development.
- Recovery process when reconnecting
- Fine edge case support
- load balancing
- Troubled by PubSub
More information on creating a detailed edge case support system can be found in this article.
Reference article: A story about testing a multiplayer implementation with a BOT.
- Technology selection and design that fits the game design is important.
- We live in an age where you can quickly create something that works on the surface, but think beyond that (e.g., ” What if the binary is modified?” What if the binary is modified? etc.)
- Have an early idea of how the test will be conducted.
2. Development of collaboration with ” Cocone Group’s blockchain ” MOOI
Here is an example of how to work with our own blockchain infrastructure.
The scope of this report does not cover the details of the infrastructure side, the details of the collaboration method, communication specifications, and security assurance. We present this as the interpretation of “a server engineer ” has become involved in the web3 business.
” MOOI Network ” our own blockchain infrastructure “
MOOI Network is a blockchain infrastructure developed by POST VOYAGER, a member of the Cocone Group. All metaverse services developed by Cocone use this infrastructure.
Reference article: MOOI, a blockchain of Cocone Group, aiming to be ranked among the top 30 in the world.
What does it mean to do blockchain collaboration?
Digital items can be owned as NFTs, providing technical protection against data destruction and tampering.
The service can also issue NFTs (Mint), which can be traded in the marketplace, or tokens that can be exchanged for MOOI “” crypto asset issued by the MOOI Network.
Experience in external collaboration development as a server-side engineer can be utilized.
Compared to working with public chains, the following elements are good features
- Questions can be answered quickly because they are within the company’s own group.
- In-house ownership, including Wallet, makes it easy to submit requests for function development
- fun of being a blockchain developed by own group
And since the target of blockchain integration is the “data” within the service, server-side engineers will play an active role in this integration. For example, it can be thought of as similar to external linkage such as payment support.
Knowledge around blockchain is required, but you can make use of your previous experience in developing external collaborations.
3.Kotlin Backend Architecture of Avatar Service
ClawKiss, which was released last December, is an avatar service called Dress&Earn and is a web3 service using the blockchain network MOOI.
Reference article: [New Service Interview ] The Significance of “ClawKiss” to “Dress & Earn” at NFT
At Cocone, we use Go or Kotlin as our back-end language most of the time.
The client is Unity, communication is done via gRPC, and the build is Gradle 7.4.x.
First environment built using gRPC
The health checks in ALB were not passing, and even after deploying, the health checks were not even logged.
After discussing with the infrastructure team and taking a tcpdump, we found a solution and were able to resolve the issue by allowing HTTP2.
Reference article: What I got into when I tried to run Spring Boot and gRPC with Application Load Balancer (ALB).
- Kotlin on Spring Boot is a good choice
- Avatar services are also built using the same technology as general web services.
Challenge to web3
After the talk, CTO Takayama joined the Q&A session.
When asked, “Did you have any knowledge of blockchain/web3 before developing the new service?” One of the presenters answered, “I had a general knowledge, but I thought the underlying technology was a completely different world. However, server engineers are only involved in the coordination part, so we can make use of the knowledge we have acquired so far. I acquire the necessary knowledge as I proceed with development. I think this job is suitable for those who want to acquire new knowledge.
Even if you have never been involved in web3 services, you will be able to make use of your various experiences, including knowledge of external collaborative development!
If you want to challenge yourself in a new field, Cocone has the perfect environment for you!
At the end of the event
We introduced our company and the position of “Server Engineer” that we are actively recruiting for.
Cocone develops services using technologies such as Golang, Java (SpringBoot), Kotlin, MongoDB, MySQL, Redis, and Elasticsearch. In addition, our engineers are always aware of the problem of how to handle large amounts of data and traffic. They are always aware of these issues and work daily with a high level of technical skills.
We are also developing services with a global market in mind!