Upload
nikita-kurpas
View
32
Download
0
Embed Size (px)
Citation preview
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