About ibai.eus

Personal Project
Challenges
Domain
Me

Welcome to ibai.eus domain!

I am Ibai, the creator of this private domain and I would like to give you some insights on the composition of this microscopic part of the internet if you are willing to.

The goal of setting up this domain and configuring the underlaying services was to prove myself that I am ready to run any technical aspect of a project or idea if the occasion is presented. Furthermore, by simulating the technical department of an small company I am able to improve my understandings in different aspects that surround my natural environment as a software engineer.

Architecture

Servers
Dedicated

Three dedicated and self hosted servers form the core architecture of this domain.

The process of releasing them has been entirely handled by myself, from the very first steps such as choosing the hardware, buying it, building the servers, setting/feeding them up (with open source meat of course), until publishing them and maintaining all their illnesses. Hardware, network and software issues are regular visitors in the domain.

Other small instances in Amazon's and Red Hat's clouds serve me in supportive tasks.

Amazon Web Services

Servers
Cloud
Web Services

I use the cloud to bring high availability and resiliency to my services and for an additional backup layer of my private data.

Some of the AWS services I use include:

EC2 ECR VPC RDS IAM ParameterStore
Fargate ECS ELB S3 KMS CloudWatch

Deprecated Evaluated
Openshift Google Cloud Platform, OpenStack

Seafile

Private Cloud
Files
Privacy

Seafile is an open source cloud storage system with file encryption and group sharing capabilities.

Allows me and my collaborators to host, synchronize or share files with total privacy due to its additional client side encryption.

SSL Everywhere!!

Network
SSL

External networks can reach this domain only through secure HTTP connections.

For the global purpose I use a wildcard SSL certificate and for every second level subdomain I create specific ones with Letsencrypt.

WireGuard

Network
VPN

All dedicated servers and cloud instances are connected to a virtual private network which is used to connect internal services and applications through a secure and private channel.

WireGuard is a modern and robust tool that brings great speed and security to the network scene.

Deprecated Evaluated
OpenVPN IPSec

Squid

Network
Proxy

Squid is a caching proxy for the Web which I mainly use as a forwarding highly anonymous proxy.

The proxy is shared with people that needs to evade geographic restrictions.

Nginx

Network
Reverse Proxy
Load Balancer

Very powerful reverse proxy and load balancer used to distribute the requests across the instances and services that form this network.

Grafana

Monitoring
Analytics
Alerting
Dashboard

I use Collectd to gather system metrics about hosts/containers and InfluxDB to persist them.

Then I can visualize individual and aggregated data near real time with Grafana and set alerts easily, which takes the task of monitoring to the next step.

Deprecated Evaluated
Zabbix Nagios

Prometheus

Monitoring
Analytics
Alerting
Dashboard

With Spring Boot Actuator and Micrometer I can collect lots of different metrics about the Java applications I deploy, including information such as REST API requests/status/response-times, JVM statistics, custom metrics, etc.

I chose Prometheus as the time series database for collecting application metrics since it integrates seamlessly with Grafana, the tool I use to visualize data, analyze it and set alerts.

Evaluating
InfluxDB

Kibana

Logging
Alerting
Dashboard

The Elasticsearch, Logstash and Kibana stack is a great to centralize logs and make them easier to analyze. File Beats is used to collect the logs from different nodes and to send them to Logstash before their transformation.

Docker

Containers
Virtualization
Hosting

Thanks to the lightweight nature of the containers I can deploy multiple applications, services and websites in different nodes in a fairly simple, robust and automated way.

These sandboxed execution environments are ideal to safely expose services to the internet or to create testing environments automatically.

Hosting
Website and application hosting service with limited resource access for me and for close people. Currently is hosting static and PHP websites plus Java applications.

Testing
Instances are started at will to reproduce production environments and launch testing/staging phases of Java EE applications.

Deprecated Evaluated Evaluating
Vagrant Puppet, Chef, Ansible Docker Swarm, Kubernetes

PHP

Hosting
Development
Websites

It is used to run hosted websites and applications. My knowledge in this field is limited, therefore I have only used it at the time of developing simple and dynamic websites or collaborating in projects involving Wordpress or Joomla.

MySQL

Hosting
Development
Database

When it comes to relational databases I find MySQL very robust.

I have used it for a very long time and don't have very much to complain about. Powerful integration with third party software with great stability.

CentOS

Servers
Operating System
SysAdmin

For running a server no doubt, linux. But out of all the alternatives CentOS gives me incredible stability and reliability backed up by the community and Red Hat's team.

I am starting to get used to writing scripts to automate tasks such as instance creation and provision, system maintenance and monitoring, build and deployment of applications and websites, etc.

Jenkins CI

Continuous Integration
Maintenance

Dear Jenkins, my most loyal servant, always ready to carry out the dirtiest jobs.

Automating all the tasks related to system maintenance and service deployment is the key to spend as less time as possible on repetitive and boring tasks.

Continuous integration and continuous delivery is achieved easily thanks to the extensibility and strength of this great tool.

Git

Development
Code
Repository

I have used SVN in the past, but git improves it in every aspect.

Easy and extremely powerful distributed version control system, thanks Linus for another great contribution.

Maven

Development
Build
Deploy
Dependencies

One of the greatest contributions to the Java development process.

Extreme flexibility that allows me to customize and automate the process of handling dependencies, building and deploying applications at will.

Jira

Project Management
Issues
Progress

Very powerful tool from the Atlassian suite that allows me to apply agile methodologies to the project management process.

It helps me to plan time tables, track issues and offers great integration with Bitbucket git repository solution.

Confluence

Project Management
Wiki

Another product of the Atlassian suite. This time a powerful and centralized wiki solution which offers integration with issue tracking and code repository hosting platform.

Bitbucket

Project Management
Code
Repository

Tool to manage my git repositories. Good integration with other products from the Atlassian suite.

Github

Code
Repository
Public
Share

Although my public repositories are originally hosted in my servers, a hook mirrors them to GitHub for more visibility.

Java

Development
Java
Enterprise
Backend

After ending my studies in Computer Engineering there was a difficult decision to take, which path to choose, and I chose Software Engineering.

I started to develop Android applications in Java for my Master thesis so I continued that way for a time. I realized that I did not like to deal with graphical interface related stuff and that I wanted to focus in the business logic of the applications.

That's how I became a Java backend developer which opened me the gates to the surroundings of the applications and hence, made me a better software engineer.

Spring Framework

Development
Java
Application

Modular framework that helps with the integration of Java standards and specifications at an enterprise level.

Very powerful features that allows to put more focus in the business logic.

Home Domotics

Personal Project
Pet
Domotics

"Animaliak" is a personal project I developed several years ago.

It involves many different skills such as devices, electronics, server side scripting, java backend and Android app development.

Elasticsearch

Development
Java
Search Engine
Cluster

Elasticsearch is an extremely fast and performant search engine with clustering and other advanced capabilities.

Other products from the stack I use include: Logstash (centralized and normalized logs) and Kibana (data analysis)

Spark

Big Data
Machine Learning
Data Analysis

In order to add more calculation power to my laptop and workstation I am setting up a couple of distributed Spark nodes.

In progress.

SonarQube

Development
Quality Assurance
Continuous Integration

Tons of static code analysis rules to empower cleaner and safer code.

Combined with tools like Checkstyle, FindBugs/SpotBugs, PMD, JaCoCo or Cobertura, helps at the time of developing/testing and allows to set up quality boundaries in the continuous integration pipelines to enforce a build is not deployed unless some quality criteria is met.

Nexus

Deployment
Repository

I deploy the artifacts I build to this repository to keep track of the different versions and I am currently experimenting with RPM packages to enable an easy installation of them.

Open Mind

Open Source
Share Knowledge

This domain and everything related thereto has been build using mostly open source and free software.

It is important to share the knowledge everyone has in order to make a better world. Knowledge should be costless to allow anyone have access to it. Potential inventions could get lost in their ways if no resources are made available to anyone eager to develop an idea or carry on a new project.

Why .eus?

Basque Country
Euskera

I come from the Basque Country where the pride and the feelings for our land are very strong.

Promoting and preserving the Basque language is one of our duties as Basque citizen, so I take this chance to let others know about this .eus domain and the Basque culture.

ikurriña

Stackoverflow

Collaboration
Share Knowledge

Stackoverflow and StackExchange communities are one of the best tools any developer or IT employee can find out there. Clear example of knowledge sharing and collaboration which sometimes helps more than official documentations or at least complements them.

Portfolio

Me
My Work

My portfolio describes a little bit my professional career and evolution. Interesting for potential employers or recruiters.