Individual Professional Practice in Tieto Czech s.r.o. Nikita Kurpas on the position of Software Developer Internship
Individual Professional Practice in Tieto Czech s.r.o.
Nikita Kurpas on the position of Software Developer Internship
Contents
● Job description● Brief description of each project● Detailed description of project “Karellen”
○ Goals○ Architecture○ Technologies○ Modules○ Results
● Final notes
Job description
● First month - System Engineer Internship○ Minor code fixes, template coding in XWiki platform○ Only a few tasks related to my position
● Later - Software Engineer Internship○ Primary role - Java developer○ Other roles - JavaScript developer, UI engineer○ Internal and client projects
Projects
● Karellen● NEO Denmark● NEO Norway● TRIP
● Karellen - a monitoring system○ Role: backend developer, frontend developer○ Tasks:
■ Developing backend modules■ Developing GUI module
● NEO Denmark - backend for a mobile operator○ Role: backend developer, frontend developer○ Tasks:
■ Refactorings■ Bug fixes■ Rewriting existent project
● NEO Norway - backend for a mobile operator○ Role: frontend developer○ Tasks:
■ Integrating new technologies● TRIP - doc. search and indexing database and GUI
○ Role: backend developer, frontend developer○ Tasks:
■ Bug fixes■ Developing new features on backend and
frontend
Project “Karellen”
Project “Karellen”Goals
● Monitoring of applications, databases, web servers, web sites...
● Presenting data to the user in a concise way
● Alerting user via Email, SMS, TONE
● Exporting data to XML, Excel, CSV
● Reporting and analysis
Project “Karellen”Definitions
● Snapshot● Entity
● Entity - a monitored “thing”: web server, database, application server, etc…
● Snapshot - state of an entity at some point in time
Project “Karellen”Architecture
● Microservices architecture● Highly modular● Communication: HTTP REST● Modules (what was done):
○ Store○ Configurator + GUI○ Status engine○ Dashboard○ Collectors
■ Sniffers● Each module: 3 tier architecture
○ Presentation tier○ Logic tier○ Data tier
Project “Karellen”Technologies
● Java 8● Spring framework
○ Spring boot○ Spring DI○ Spring MVC
● JPA○ Hibernate ORM○ Spring Data JPA
● JSF○ PrimeFaces
● MySQL
Project “Karellen”Store module
● Responsibilities○ Store snapshots○ Provide a RESTish API to
access them● Architecture: 3 tier
○ Presentation tier■ RESTish
controllers○ Logic tier:
■ Services■ Mappers
○ Data tier■ Hibernate ORM■ Spring data JPA
Project “Karellen”Dashboard module
● Responsibilities○ Present current status of
monitored entities to the user
● Architecture: 3 tier○ Presentation tier
■ JSF views and managed beans
○ Logic tier:■ Services
○ Data tier:■ Status Engine
connector■ Configurator
connector
Project “Karellen”Status Engine
● Responsibilities○ Provide entity status
based on recent snapshots
○ Rate snapshots● Architecture: 3 tier
○ Presentation tier■ RESTish
controllers○ Logic tier:
■ Services■ Mappers
○ Data tier■ Store connector■ Configurator
connector
Project “Karellen”
● Finished at ~75% of planned functionality
● New GUI written from scratch using Material Design and JavaScript
● Client refused to buy● Project status: used internally
Results
Final notes
Practice evaluation
● Work was done thoroughly, in the best possible way I was capable of● I have known or quickly learned the technologies needed to accomplish a
task● I have been promoted to 2 higher grade projects
○ NEO Denmark○ NEO Norway
Personal benefits
● Advanced a lot in Java SE and EE, JavaScript + ECMAScript 6, HTML, CSS, Software Design
● Had intensive trainings from real professionals● Had experience with old, bad and obsolete code● Had experience rewriting projects from scratch and doing complex
refactorings● Was able to communicate daily in English
Final notes
● Project “Karellen” - A+● Project “NEO Denmark” - B● Project “NEO Norway” - B● Project “TRIP” - E
FOR YOUR ATTENTION
THANK YOU
Q&A
Microservices Architecture
● System is broken into multiple component services● Those services are
○ Small○ Independently deployable○ Modular○ Communicate through a well-defined interface
● Decentralized governance● Separate databases (NoSQL or micro-SQL)● Organises around business capabilities
Agile
● Short iterations (1-4 weeks)● Customer Satisfaction● Welcome Change● Deliver a Working Software● Collaboration● Review the Work Regularly● Measure the Progress as per the Working Software
Agile: The Manifesto
● Individuals and interactions over processes and tools
● Working software over comprehensive documentation
● Customer collaboration over contract negotiation
● Responding to change over following a plan