분류 전체보기 (243) 썸네일형 리스트형 [Spring] MSA와 Spring Cloud 현대의 소프트웨어 개발은 급변하는 요구사항과 복잡한 시스템 구조로 인해 기존의 모놀리식 아키텍처로는 대응하기 어려운 상황에 직면해 있습니다. 이러한 문제를 해결하기 위해 등장한 개념이 바로 마이크로서비스 아키텍처(MSA, Microservices Architecture)입니다.MSA는 애플리케이션을 작은 독립적인 서비스로 분리하여 개발, 배포, 확장이 용이하게 합니다. 이를 통해 개발팀은 민첩성을 높이고, 시스템의 안정성과 유연성을 확보할 수 있습니다. 하지만 MSA의 도입은 단순히 아키텍처를 나누는 것만으로는 충분하지 않습니다. 각 마이크로서비스 간의 통신, 구성 관리, 서비스 디스커버리 등 다양한 운영 문제를 효율적으로 해결하기 위한 툴과 프레임워크가 필요합니다.Spring에서 Spring Cloud.. [Tip] 소프트웨어 버전 번호 별 의미 소프트웨어 버전 관리에서 버전 번호는 일반적으로 세 자리의 숫자로 구성되며, 각 숫자는 각각 주 버전, 마이너 버전, 패치 버전을 나타냅니다. 버전 번호의 구성형식: 주 버전.마이너 버전.패치 버전 (Major.Minor.Patch)주 버전 (Major)의미: 주 버전의 변경은 대규모 업데이트나 중요한 변경 사항을 나타냅니다. 이는 API의 호환성을 깨트릴 수 있으며, 이전 버전과의 역호환성을 보장하지 않을 수도 있습니다.변경 이유: 완전히 새로운 기능이나 아키텍처 변경, 혹은 기존의 기능을 크게 변경하여 사용자나 다른 소프트웨어가 큰 영향을 받을 수 있는 경우 주 버전이 증가합니다.예시: 1.0.0에서 2.0.0으로의 변경은 소프트웨어가 근본적으로 많이 변했고, 사용자는 코드 수정이 필요할 수 있음을 .. [Diary] 지저분한 Service 메서드 코드 Command DesignPattern 적용기 이 글에서는 설문조사 웹 애플리케이션 개발 프로젝트에서 서비스 레이어 메서드의 로직이 가독성이 떨어지고, 유지보수가 어려운 상황을 개선하기 위해 Command 디자인 패턴을 적용한 경험을 공유하고자 합니다.Command 패턴Command 패턴은 행동 패턴 중 하나로, 요청을 객체의 형태로 캡슐화하여 여러 가지 다른 요청이 나중에 필요할 때 실행되거나 취소될 수 있도록 하는 패턴이다. 이 패턴을 사용하면 요청하는 객체와 요청을 수행하는 객체 사이의 결합을 느슨하게 만들 수 있다.Command 패턴의 핵심 아이디어는 작업을 요청하는 객체를 독립적으로 처리할 수 있게 하는 것이다.Command 패턴의 구성 요소Command 인터페이스:실행될 동작을 정의하는 인터페이스이다. 일반적으로 execute() 메서드를.. [Spring] MVC 패턴과 Spring MVC 이 글에서는 웹 애플리케이션에서 흔히 사용되는 디자인 패턴인 MVC 패턴과, Spring 에서는 어떻게 이 패턴을 구현하는지에 대해 알아보고자 합니다.디자인 패턴: MVC 패턴MVC란 Model-View-Controller의 약자로, 소프트웨어 디자인 패턴 중 하나이다.MVC 패턴은 소프트웨어를 구성하는 요소들을 Model, View, Controller로 구분하여 각각의 역할을 분리한다.Model데이터와 비즈니스 로직을 담당한다.데이터베이스와 연동하여 데이터를 저장하고 불러오는 등의 작업을 수행한다.View사용자 인터페이스를 담당한다.사용자가 보는 화면과 버튼, 폼 등을 디자인하고 구현한다.ControllerModel과 View 사이의 상호작용을 조정하고 제어한다.사용자의 입력을 받아 Model에 전달.. [Network] 웹 서버와, 웹 애플리케이션 서버 (+ Apache, Apache Tomcat, Nginx) 웹 서버와 웹 애플리케이션 서버(WAS)의 개념은 다소 다릅니다. 이 글에서는 웹 서버와 웹 애플리케이션 서버의 차이를 설명하고, 어떤 종류가 있는지 소개하고자 합니다.네트워크와 인터넷네트워크네트워크는 두 개 이상의 컴퓨터나 장치가 서로 데이터를 주고받기 위해 연결된 시스템이다. 네트워크는 다양한 크기와 형태로 존재할 수 있다.LAN (Local Area Network): 제한된 지역 내의 네트워크로, 예를 들어 사무실이나 가정 내의 네트워크가 이에 해당한다.WAN (Wide Area Network): 넓은 지리적 범위를 아우르는 네트워크로, 여러 도시나 국가를 연결할 수 있다.MAN (Metropolitan Area Network): 한 도시나 대도시 지역을 커버하는 네트워크이다.PAN (Persona.. [개발 일기][Spring] grafana_session 쿠키 문제와 Custom Login Filter 구현하기 제 프로젝트에서 Spring Security로 구현한 인증 로직에서는, 인증이 필요한 엔드포인트에 접근할 때 JSESSIONID가 쿠키에 포함되어 있는지를 검사하는 로직이 있었습니다. 하지만 같은 도메인에 접근하는 경우, 모든 요청에 쿠키가 함께 전송되기 때문에 문제가 발생했습니다.이 글에서는 grafana를 사용할 때 grafana_session이라는 쿠키의 path가 '/'로 되어있어서, Spring Security Session Filter에서 쿠키 검사 시 인증이 되지 않았던 문제 상황과 해결 과정을 소개합니다.문제 상황위처럼 FilterChain에서 permitAll()이 설정되어 있는 링크를 접속했더니 이런 예외를 발생시켰다.아니 왜 permitAll이 설정되어 있는 엔드포인트 접근인데 인증이.. [Database] DBCP (DB connection pool)과 hikariCP, MySQL을 기준으로 백엔드 애플리케이션이 API 요청을 받으면 종종 데이터를 검색하거나 조작하기 위해 데이터베이스와 상호작용해야 합니다. 이 상호작용은 데이터베이스에 쿼리를 보내고 데이터베이스가 쿼리에 응답하는 과정을 포함합니다. 데이터를 처리한 후 애플리케이션은 API 요청자에게 응답을 보냅니다. 백엔드와 데이터베이스 간의 통신은 TCP(Transmission Control Protocol)를 통해 이루어집니다. TCP는 데이터 전송에서 높은 신뢰성을 제공하기 때문에 선택됩니다. TCP 연결을 설정하는 과정에는 연결을 열기 위한 3-way handshake와 연결을 닫기 위한 4-way handshake가 포함됩니다. TCP는 신뢰할 수 있는 통신을 보장하지만, 쿼리를 실행할 때마다 Connection을 열고 닫는 과정은.. [Spring] 서버 모니터링을 위한 Spring Actuator, Prometheus, Grafana 추가하기 모니터링은 애플리케이션의 성능과 안정성을 유지하기 위해 필수적인 요소입니다. 서버의 상태를 실시간으로 파악하고, 성능 이슈를 사전에 감지하여 대응할 수 있게 해 줍니다. 이를 통해 서비스의 가용성을 높이고, 안정적인 서비스를 운영할 수 있습니다. 이번 글에서는 Spring Boot 애플리케이션에 Spring Actuator를 추가하고, Prometheus와 Grafana를 사용하여 모니터링을 설정하는 방법을 알아보겠습니다.모니터링 정보모니터링을 하면서 수집하는 주요 정보는 시스템이나 애플리케이션의 상태, 성능 및 동작을 평가하는 데 사용되는 모든 종류의 데이터를 포함한다. 여기에는 metric, log, trace, event 등의 다양한 데이터가 포함될 수 있다. 모니터링 정보의 구성 요소metric:.. 이전 1 ··· 5 6 7 8 9 10 11 ··· 31 다음