Internship at LINE corp




Internship at Line corp 

I recently completed an 8-week internship at LINE Corp as a software developer. It was a fantastic experience. Alongside my team, we developed an application that required specific requirements. While it was challenging, as it was my first time working on a project that needed to function properly, it was also incredibly exciting.

Skills used 

During my internship at LINE Corp, each team member was responsible for different aspects of the project. My specific responsibilities included developing security features, integrating Kafka, working with databases, and handling the front-end development. It was my first time using a front-end framework, and it was an exciting opportunity to learn and work with it. To implement the back-end, I utilized the Spring framework, including Spring Security and Spring Cloud Stream for Kafka, JOOQ for database management, and Vue and Kendo-UI for the front-end. Additionally, we had the opportunity to set up and utilize our own infrastructure, such as a private cloud environment provided by LINE Corp which include Kafka servers and VOS servers for file storage. To streamline the project setup process, we used JHipster.

Spring security 

During my internship, I implemented both username and password authentication and JWT authentication and authorization for secure user authentication and authorization. As we planned to run the front-end and back-end servers separately, we used REST APIs to enable communication between them. For signing in, we used username and password authentication, and for accessing the backend REST endpoints, we included the JWT in the Authorization header of the request. The backend would then validate the JWT and check the user's authorities. Developing security-related code was a great learning experience, as I had the chance to dive deeper into various security concepts such as CORS, CSRF, JWT, and username-password authentication. Additionally, I added the user's entity id in the JWT token. While this could potentially present security issues, we determined that it was not a significant concern as the application we were developing was intended for internal use only. The reason for including the user id in the JWT was to facilitate specific authorization checks, as it eliminated the need to query the database every time a request was made.

Kafka 

It was a valuable experience to work with and connect to actual Kafka servers during my internship. This experience deepened my understanding of the publish-subscribe architecture and the internal workings of Kafka. I utilized Spring Cloud Stream to connect Kafka bindings to our Spring application, which allowed us to send data to the Kafka brokers. Overall, it was a great experience to work with real Kafka servers and gain a deeper understanding of how they work.

Jooq 

During my internship, I also had the opportunity to work with JOOQ, which is a library that allows for easy interaction with databases. JOOQ is somewhat similar to query dsl, but it has a different approach when working with databases. Unlike other database-related libraries, JOOQ follows a "database first" design approach, which requires that the database design be completed first and then JOOQ will automatically create classes that represent the database. I found this approach to be particularly useful in a Microservice Architecture (MSA) setting, as it allows for uniform database-related classes to be used across multiple applications that are utilizing the same database. Overall, JOOQ was a powerful tool that helped me to easily interact with the databases, and the "database first" design approach was really beneficial.

Vue and Kendo-ui 

It was my first experience working with a front-end framework during my internship. Initially, I was concerned that it would take a significant amount of time to learn and apply them to my code, but Vue proved to be a user-friendly framework and it didn't take long to learn and implement it in my code. In fact, I found the front-end development process to be enjoyable. Additionally, I used Kendo-UI to create various useful components such as grids, buttons, forms, and windows. However, as Kendo-UI is a UI framework, it did take some time to read the documentation and familiarize myself with it. Overall, it was a great experience to learn and work with these frameworks, and I feel more confident in my ability to use them in future projects.

Architecture


Review

Initially, I was a bit intimidated to begin development as there were so many new concepts and technologies to learn. But as I encountered challenges, I was fortunate to have the support of my teammates and mentors who helped me work through and solve problems. Through this experience, I learned the importance of effective communication and not being afraid to ask for help when needed. I found the process of developing and problem-solving to be highly enjoyable and I enjoyed every aspect of my internship. I am incredibly grateful to LINE Corp for providing me with this valuable opportunity and I have gained a lot from it.

p.s. I am thrilled to announce that I have been offered and accepted a full-time position at LINE Corp! 

Popular posts from this blog

LeetCode and Google kickstart Achievments !!

About me