
과거 IT 시스템에서는 하드웨어가 중심이었기 때문에 시스템을 확장하기 위해서는 추가적인 하드웨어 구매가 필요했고 비용적인 측면에서 부담으로 다가왔다. 그렇기에 소프트웨어 변화가 어려웠고 깨지기 쉬운 시스템이 많이 존재했다. 기술의 발전으로 인해 하드웨어의 가격은 안정화되었고 초점을 소프트웨어로 돌리기 시작했다. 이로 따라 안정적이고 성능 높은 서비스를 개발하기 위해 큰 노력을 하게 되었고 시스템 분산화가 등장하게 된다. 최근에는 시스템을 로컬 환경에서 운영하는 것이 아닌 클라우드로 이전하게 되었고 탄력적인 시스템을 구축할 수 있게 되었다. 그렇다고 비용이 증가한 것인가? 비용 또한 직접 저렴하게 사용할 수 있다. 이러한 시스템 아키텍처를 클라우드 네이티브 아키텍처라고 한다. 앞으로도 지속해서 발전하고 상..

네트워크 통신 Network 컴퓨터 간의 데이터를 주고받기 위해서는 즉, 통신을 하기 위해서는 네트워크가 필요하다. 네트워크란 컴퓨터 노드들이 자원을 공유할 수 있도록 링크로 연결하여 하나의 망을 만든 것을 의미한다. 이러한 연결이 존재하기 때문에 노드(컴퓨터) 간의 데이터 교환이 가능하다. 다양한 컴퓨터 시스템 간의 통신을 위해서는 표준 프로토콜이 필요하게 되었고, 국제 표준화 기구(ISO)에서는 OSI Model을 정의하게 되었다. 최초로 정의된 모델은 7계층을 가지고 있었는데 표준이 지속적으로 갱신되면서 현재는 5계층 모델이 전 세계 표준으로 적용되고 있다. HTTP 5계층 모델은 네트워크상의 프로토콜을 정의한 모델이고 인터넷상에서의 주요 프로토콜은 HTTP이다. HTTP는 하이퍼텍스트 전송 프로토..

Logging 로그 목적 로그란? 모든 현상과 동작 정보를 시간 경과에 따라 기록한 데이터를 의미한다. 이러한 로그를 잘 남기는 것은 개발에 있어서 중요한 역할을 하게 된다. 개발 시 에러를 확인하고 해결할 수 있고 개발을 진행함에도 도움을 준다. 또한 해당 데이터를 바탕으로 마케팅을 할 수 있으며 보안 측면에서도 사용할 수 있다. 장점들로 인해 모든 것을 로그로 기록하게 된다면 너무 방대한 양의 로그 파일이 생성되는 문제가 발생하고 의미 있는 정보를 얻을 수 없다. 그렇기에 로그를 효율적으로 남기는 것이 중요하다. 간단한 로그 Spring에서 가장 간단하게 로그를 남기는 방법은 System.out.println을 사용하는 것이다. 콘솔창을 통해 출력 결과를 쉽고 빠르게 확인할 수 있다는 장점이 존재한다..

개요 정해진 틀에 의해서만 동작하게 되는 장치가 존재한다면 어떻게 될까? 결함이나 새로운 기능의 추가로 인해 장치가 변경되어 틀과 맞지 않게 된다면 틀까지 바꿔야 하는 큰 비용을 투자해야 하는 문제가 발생한다. 이를 간단히 해결하는 방법이 어댑터이다. 실생활에서 어댑터의 사전적 의미는 다른 전기나 기계 장치를 서로 연결해서 작동할 수 있도록 만들어 주는 결합 도구이다. 이는 하드웨어적인 의미로 소프트웨어적으로 생각해보면 다음과 같이 생각해볼 수 있다. 서로 다른 인터페이스(=장치)를 연결해서 작동할 수 있도록 한다. 이렇게 본다면 이해가 어려울 수 있다. 따라서 MVC 구조의 프론트 컨트롤러와 핸들러(컨트롤러)간의 예시를 통해 하나씩 알아보고자 한다. MVC Adapter Pattern 프론트 컨트롤러 ..