Computer Science/Spring6 WebApplication 이해 웹 어플리케이션 : 인터넷이나 인트라넷을 통해 웹 브라우저에서 이용할 수 있는 응용 프로그램. 웹 서버, 웹 어플리케이션 서버모든 것이 HTTP - 과거 초기의 웹 어플리케이션은 Client - Server 컴퓨팅 환경에서의 각 응용 소프트웨어마다 UI를 가지고 있었으며, 사용자 PC마다 따로 설치했어야 했다.- 현재는 HTTP 라는 통일된 프로토콜을 사용하지만, 과거에는 회사마다 독자적인 통신 프로토콜을 사용했었기 때문이다.- 대개 독자적인 규격을 가지는 것은 회사입장에서 매우 큰 이득이지만, Web 에서 만큼은 매우 큰 비용을 초래하여 생산성이 떨어진다는 문제가 발생함.- HTTP 프로토콜의 정립으로 인해 웹 어플리케이션을 제공하는 기업의 유지 비용이 줄었다. * 웹 서버 (Web Server)- H.. 2024. 12. 18. Spring과 Spring boot * Spring의 특징 1. DI (Dipendency Injection) : Spring 프레임워크에 의존성을 주입하면서 객체 간 결합을 느슨하게 하여 코드의 재사용성 증가 및, 단위 테스트 용이하다.2. IOC (Inversion Of Control) : 의존성 주입의 한 형태로, 객체의 생성 및 생명 주기를 제어하는 책임을 개발자가 아닌 프레임워크에 위임한흔 것을 말한다. 개발자는 객체의 구체적인 구현에 의존하지 않고 객체의 인터페이스에만 의존할 수 있다. 이는 코드의 재사용성과 유지보수성을 향상 시킬 수 있다. - Spring은 IoC를 구현하는 다양한 방법을 제공하는게 가장 일반적인 방법은 컨테이너에 객체를 등록하고 컨테이너에서 객체를 주입하는 방법이다. 컨테이너는 객체의 생명주기를 관리하고, .. 2024. 12. 18. Spring 트래픽 처리 방법 * intro - 추후에 트래픽 문제를 해결하기 위해서 SpringBoot를 사용했을때 처리하는 방법을 알아두면 추후에 유용할것 같아서 미리 작성한다. 1. 로드밸런싱 (Load Balancing)- 로드밸런싱은 여러 서버 ( 혹은 인스턴스 ) 로 트래픽을 균등하게 배분하여 특정 서버에 과도한 부하가 몰리지 않도록 하는 핵심적인 기법.- Spring Cloud Gateway 나 Zuul( Netflix OSS) 같은 API Gateway를 사용해 트래픽을 마이크로서비스 아키텍처에 유연하게 분배.- 컨테이너 오케스트레이션 도구 사용시 ReplicaSet 및 HPA 를 통해 가용 인스턴스 자동 스케일링. ( 어려움 ) 스케일링 - 수평 스케일링 : 애플리케이션 인스턴스 늘려서 요청 처리 능력 증대. - 수직.. 2024. 12. 10. 동기 방식으로 외부 서비스를 호출할 때 외부 서비스 장애가 나면 어떻게 조치할 수 있을까. * intro - 외부 서비스 장애로 인해 응답이 오래 걸린다고 했을 때 외부 API 응답으로 대기하는 자원들이 운영 서버 내부에 쌓이면 성능에 악영향을 줌. 이를 해결하기 위한 가장 기본적인 방법은 time out을 설정하는 것. * HTTP 커넥션 풀이란?Clientd와 Server간에 지속적으로 유지할 수 있는 HTTP 연결들을 재사용하기 위한 메커니즘 또는 관리 방식입니다. 일반적으로 애플리케이션이 서버와 통신할 때, 매 요청마다 새로운 TCP 연결을 맺고 HTTP 요청을 전송한 뒤, 응답을 받고나서 연결을 종료하는 과정을 반복하면 다음과 같은 비효율이 발생. 1. 연결 설정 오버헤드:TCP 핸드셰이크(3-way handshake), TLS 핸드셰이크(HTTPS의 경우) 등 연결을 맺는 과정은 .. 2024. 12. 10. JSON에 대해서 ( Serialiazation, Deserialization ) * JSON 이란? - JavaScript Object Notation 경량의 데이터 교환 형식으로, 사람이 읽고 쓰고 쉽게 기계가 분석하고 생성하기 용이한 구조를 갖춘 포맷. 키-값으로 데이가 표현되며, 다양한 프로그래밍 언어에서 쉽게 파싱할 수 있음. * 예시{ "name": "Alice", "age": 30, "hobbies": ["reading", "music"]} * 특징 - 직렬화 (Serialization) 과 역직렬화 (Deserialization) 으로 데이터를 주고받을 수 있다. 1. 직렬화 Serialization - 애플리케이션 메모리 상의 객체 ( Ex : Java의 POJO 객체, Python의 dick등)를 JSON 문자열로 변환하는 과정.이 과정을 통해 데이터는 문자열 .. 2024. 12. 8. @Component, @Controller, @Service, @Repository 차이점 * intro - @Component, @Controller, @Service, @Repository 각각의 클래스를 특정 역할을 수행하는 Spring Bean으로 등록할 때 사용됩니다. 각 어노테이션은 클래스가 어떤 역할을 하는지 명시적으로 나타냄. Spring의 @ComponentScan 기능을 통해서 자동으로 Bean으로 등록됩니다. @Controller, @Service, @Repository는 내부적으로 @Component를 사용합니다. * Component - 가장 일반적인 형태의 어노테이션, 특정 역할에 종속되지 않는 일반적인 Spring Bean 나타냄. * Service- 비즈니스 로직을 수행하는 클래스에 사용됨. * Controller- Spring MVC에서 웹 요청을 처리하는 컨트롤.. 2024. 12. 8. 이전 1 다음