유리쯔의일상 2023. 12. 27. 19:52
반응형

 


 

 김춘장이의 위키백과 - 나만의 공부 기록 Tistory ❤ 

 

 


 

 

 

그동안 포스팅이 늦었다
(스프링 공부에서 멘탈이 잠깐 부서졌다가 , 지금은 안정기를 찾았다)
그래도 매일매일 옵시디언에 정리를 해놔서 몰아서 포스팅할 수 있었다
이젠 아무리 멘탈이 나가더라도 꼭 포스팅을 하는 습관을 다시 길들어야겠다 ㅠ


스스로 핵심 단어 공부

드디어! 🌱스프링을 들어가는 날이다.
수업을 들어가기 전 먼저 핵심 단어명을 먼저 알려주셨고, 개념정리를 검색을 통해 먼저 해보라고 하셨다.

 

POJO
IOC/DI
AOP
PSA
빌드
웹서버와 WAS 차이
웹서비스란


스프링과 스프링프레임워크

  • 스프링
    엔터프라이즈용으로 java 애플리케이션 개발을 편하게 해주는 오픈소스 경량급 애플리케이션 프레임 워크
  • 프레임워크
    어떤 목적을 쉽게 달성할 수 있도록 해당 목적과 관련된 코드의 뼈대를 미리 만들어 준다
  • 스프링 특징

Pasted image 20231227175843.png

POJO (Plan Old Java Object)

순수 자바를 통해 생성한 객체를 뜻한다
JAVA 및 JAVA의 스펙에 정의된 기술만 사용한다는 의미로
어떤 객체가 외부의 라이브러리나 외부의 모듈을 가져와서 사용한다면, 그 객체는 POJO가 아니다
말 그대로 다른 기술을 사용하지 않고 순수한 JAVA만을 사용하여 만드는 객체

POJO의 특징
외부 라이브러리나 모듈에 종속적이지 않으며 외부 기술이나 규약의 변화에 얽매이지 않는다, 변화에 대한 유연성과 확장이 가능하다

POJO를 적극적으로 활용하는 프로그래밍 패러다임이 POJO프로그래밍
완전히 안 쓰겠다는 건 아니라 함

 

 

 

 

IoC/DI

Inversion Of Control / Dependency Injection

제어의 역전, 의존성 주입

  • 개요
    IoC(Inversion of Control, 제어의 역전)는 프로그램의 흐름을 사용자가 아닌 프레임워크가 제어하는 것을 의미하며. DI(Dependency Injection, 의존성 주입)는 이 IoC의 한 방법으로, 객체의 의존성을 외부에서 주입하는 방식이다
  • 의미
    IoC/DI는 객체 간의 결합도를 낮추고, 유연한 코드 구조를 만들어 유지보수와 테스팅을 용이하게 한다
  • 특징
    • 객체의 생명주기 관리
      스프링 컨테이너가 객체(빈)의 생명주기를 관리한다
    • 설정 중심의 접근
      XML, 애노테이션, Java 기반 설정을 통해 의존성을 정의한다.
    • 느슨한 결합
      객체 간의 의존성이 감소하여 유연한 코드 변경이 가능하다.

 

 

 

AOP(Aspect-Oriented Programming)

  • 개요
    AOP는 관점 지향 프로그래밍으로, 애플리케이션의 핵심 관심사항과 공통 관심사항(횡단 관심사)을 분리하는 프로그래밍 패러다임이다
  • 의미
    AOP를 사용함으로써 재사용 가능한 모듈(Aspect)을 통해 공통 관심사를 관리할 수 있다.
    예를 들어, 로깅, 트랜잭션 관리, 보안 등이 여기에 해당한다.
  • 특징
    • 코드의 중복 제거
      공통 관심사를 한 곳에 모아 관리함으로써 코드 중복을 줄일 수 있다
    • 유지보수성 향상
      핵심 로직에서 부가 기능을 분리하여 유지보수를 용이하게 한다
    • 동적 프록시
      스프링 AOP는 주로 프록시 패턴을 이용해 구현된다

PSA (Portable Service Abstraction)

  • 개요
    이식 가능한 서비스 추상화)는 스프링이 제공하는 일관된 서비스 추상화로, 다양한 기술과 라이브러리에 대해 일관된 프로그래밍 모델을 제공한다
  • 의미
    PSA를 통해 개발자는 다양한 환경(예: 데이터 접근 기술, 메시징 시스템)에서도 일관된 방식으로 작업할 수 있다
  • 특징
    • 기술의 추상화
      데이터 액세스, 메시징, 웹 MVC 등 다양한 영역에서 추상화를 제공한다
    • 환경에 대한 유연성
      추상화 덕분에 구현 기술을 변경해도 애플리케이션 코드 대부분은 변경하지 않아도 된다
    • 표준화된 접근
      일관된 프로그래밍 모델을 통해 학습 곡선을 줄이고, 개발 효율성을 높일 수 있다

 

 

 

 

빌드 (Build)

  • 개요
    빌드는 소프트웨어 개발 과정에서 소스 코드를 실행 가능한 소프트웨어 아티팩트로 변환하는 과정을 말한다
    이 과정에는 컴파일, 링크, 패키징 등이 포함될 수 있다
  • 의미
    빌드는 개발된 코드를 실제로 실행할 수 있는 형태로 만드는 중요한 단계이다.
    개발자가 작성한 소스 코드가 실제 환경에서 어떻게 동작할지를 확인하는 과정이기도 하다.
  • 특징
    • 자동화 도구 사용
      빌드 프로세스는 대부분 자동화 도구 (예: Maven, Gradle)가 있다.
    • 컴파일 과정 포함
      소스 코드를 컴파일하여 실행 가능한 형태로 변환한다
    • 의존성 관리필요한 라이브러리와의 의존성을 해결한다.
    • 테스트 및 검증
      코드 품질을 검증하기 위한 테스트를 실행할 수 있다
  • 사용 목적
    • 실행 가능한 소프트웨어 생성
      개발된 코드를 실제 실행 가능한 형태로 만든다
    • 품질 검증
      코드가 올바르게 작동하는지 테스트하고 검증
    • 배포 준비
      소프트웨어를 배포하기 위한 준비 단계
  • 장점
    반복적인 작업을 자동화하여 시간을 절약한다
    자동화를 통해 인간의 실수를 줄일 수 있다
    빌드 과정을 통해 개발 표준을 유지할 수 있다
  • 단점
    빌드 도구의 설정과 관리가 복잡할 수 있다
    큰 프로젝트의 경우 빌드에 상당한 시간과 자원이 소요될 수 있다

 

 

 

 

 

WAS (Web Application Server)

  • 개요
    WAS는 Web Application Server의 약자로,
    웹 애플리케이션을 실행시키고 관리하는 서버를 말한다
    WAS는 웹 서버(Web Server)와 함께 동작하며, 동적인 콘텐츠를 처리하는 데에 중점을 둔다
  • 의미
    WAS의 주된 목적은 웹 애플리케이션을 실행하는 것인데
    클라이언트(보통 웹 브라우저)에서 요청이 오면,
    WAS는 요청에 맞는 비즈니스 로직을 처리하고 결과를 반환한다
  • 특징
    • 동적 컨텐츠 처리
      정적인 HTML, CSS, JavaScript 파일과 달리, 서버 사이드 스크립트를 이용해 동적으로 컨텐츠를 생성하고 제공한다
    • 데이터베이스 연동
      데이터베이스와 연동하여 사용자 정보, 제품 정보 등 다양한 데이터를 처리하고 저장합니다.
    • 세션 관리
      사용자의 상태(세션)를 관리하여, 로그인 상태 유지 같은 기능을 제공한다
    • 미들웨어 기능
      애플리케이션과 데이터베이스 사이에서 중개자 역할을 하며, 다양한 미들웨어 기능을 제공한다.
  • 사용 목적
    • 복잡한 트랜잭션 관리
      웹 애플리케이션에서 발생하는 복잡한 트랜잭션을 관리하고 처리한다.
    • 비즈니스 로직 실행
      사용자의 요구에 맞춘 비즈니스 로직을 실행하여 필요한 결과를 생성한다
    • 애플리케이션 서비스 제공
      여러 애플리케이션 서비스를 통합하여 제공한다.
  • 장점
    웹 서버에 비해 더 강력한 보안 기능을 제공
    데이터베이스 트랜잭션 관리가 용이
    다양한 비즈니스 요구사항을 효율적으로 처리할 수 있다
    멀티스레딩 지원으로 동시 다수의 요청 처리가 가능하다.
  • 단점
    웹 서버에 비해 상대적으로 많은 시스템 자원을 사용한다.
    설정과 관리가 복잡할 수 있다
    무료 오픈 소스 옵션들도 있지만, 일부 상업용 WAS는 비용이 발생할 수 있다

 

 

 

 

웹서버와 WAS의 차이

웹서버

  • 개요
    웹 서버는 HTTP를 통해 클라이언트의 요청을 받아 정적 콘텐츠(HTML, CSS, JS, 이미지 파일 등)를 제공하는 서버이다.
  • 특징
    주로 정적인 콘텐츠를 처리하고,
    요청에 대한 응답으로 파일을 그대로 전송항다. 포워드 방식.
  • 장점: 간단한 구조, 빠른 응답 속도.
  • 단점: 동적인 컨텐츠 처리 불가능.

WAS (Web Application Server)

  • 개요
    WAS는 동적인 컨텐츠를 처리하기 위해 웹 서버와 함께 사용되며,
    서버 사이드 스크립트를 처리하여 동적인 웹 페이지를 생성한다.
  • 특징
    복잡한 트랜잭션 관리, 데이터베이스 연동, 세션 관리 등을 수행한다.
  • 장점: 동적 컨텐츠 제공, 비즈니스 로직 처리 가능.
  • 단점: 상대적으로 더 많은 자원 사용, 복잡한 구성.

 

 

웹서비스 (Web Service)

  • 개요
    웹 서비스는 네트워크를 통해 서로 다른 기계, 소프트웨어 간에 상호 작용을
    가능하게 하는 소프트웨어 시스템이며.
    일반적으로 XML, SOAP, WSDL, UDDI 등의 표준을 사용하여 구현된다
  • 의미
    웹 서비스는 플랫폼과 프로그래밍 언어에 독립적으로 서비스를 제공하는 방법을 말한다.
    서로 다른 환경에서 개발된 애플리케이션들이 네트워크를 통해 정보를 교환하고 상호 작용할 수 있다
  • 특징
    • 표준 기반 통신
      XML, SOAP 등의 표준을 사용하여 통신한다.
    • 언어 및 플랫폼 독립성
      다양한 프로그래밍 언어와 플랫폼에서 사용 가능하다.
    • 재사용성
      웹 서비스는 재사용이 가능한 서비스 컴포넌트로 개발된다
  • 사용 목적
    • 시스템 통합
      다양한 시스템과 애플리케이션 간의 통합을 용이하게 한다
    • 접근성
      인터넷을 통해 어디서든 접근 가능한 서비스를 제공한다.
  • 장점
    상호 운용성으로 다양한 환경의 시스템들이 서로 통신할 수 있다.
    접근 용이성이 좋다. 웹 기반으로 어디서든 접근할 수 있습니다.
  • 단점
    XML과 같은 텍스트 기반 프로토콜은 성능에 영향을 줄 수 있다
    인터넷을 통한 접근이므로 보안 취약점이 있다면 이슈가 될 수 있다
반응형