BE/SPRING

[Spring] 스프링부트 3 백엔드 개발자 되기

hyu_na 2024. 2. 16. 15:31

 

용어 정리

  • ORM

jpa - 자바에서 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스

sql이 아닌 자바 언어로 데이터베이스를 조작함

jpa는 인터페이스이므로 실제 스프링 부트에서 사용하려면 ORM 프레임워크를 추가로 선택해야함

실무에서는 대표적으로 하이버네이트를 많이 사용함

  • 인증

단순 ID/PW 입력 방식, OAuth2를 활용한 구글 로그인, JWT를 활용한 토큰 인증 방식

  • AWS 배포

개발을 마친 후 배포 단계에서 AWS의 일래스틱 빈스토크를 활용하여 블로그를 배포함

EC2, 오토 스케일링 그룹, 로드밸런서, RDS와 같은 AWS의 구성 설명부터 스프링 부트 환경을 제대로 이용하여 AWS에 배포하는 방법

  • CI/CD

개발자가 개발을 마치고 애플리케이션을 빌드하고, 테스트하고, 원격 저장소에 코드를 업데이트하고, 이를 배포하는 등 전 과정을 자동화하는 과정을 말함

대부분의 실무 환경에서는 CI/CD를 진행함. 여기서는 깃허브액션을 활용하여 CI/CD를 진행

 

 

기본 지식 

  • 서버와 클라이언트

클라이언트 - 서버로 요청하는 프로그램 ex)웹브라우저

주소를 입력하고 enter : "서버에 요청한다"

 

서버 - 클라이언트의 요청을 받아 처리하는 주체 

클라이언트가 데이터 요청시 데이터를, 서버내에서 처리만 요청시, 해당 요청만 처리

 

  • 데이터베이스

데이터베이스 - 여러 사람이 데이터를 한 군데에 모아놓고 여러 사람이 사용할 목적으로 관리하는 데이터 저장소 

MySQL, oracle, postgreSQL 등 : 데이터베이스 관리 시스템 (DBMS)

 

RDB(relational database) - 행과 열로 이루어진 테이블로 관리, 기본 키를 사용해 각 행 식별

SQL(structured query language) - 쿼리, 데이터 검색을 하는 언어 

NoSQL(no SQL or not only SQL)

- 관계형데이터베이스 - 데이터 저장, 질의, 수정, 삭제가 용이 // 성능 향상 어려움 => NoSQL의 등장

- 데이터베이스 성능 향상 <- 머신의 성능을 높이는 스케일 업, 머신을 분리하는 스케일 아웃 필요

 

  • 아이피와 포트

아이피 - 인터넷에서 컴퓨터 또는 기기들이 서로를 식별하고 통신하기 위한 주소

*아이피를 알면 서버를 찾을 수 있음

*서버를 이용하려면 아이피, 포트 알아야함 

 

서버를 찾기 위한 번호 -아이피

그 서버에 운용되고 있는 서비스를 구분하기 위한 번호-포트

 

  • 라이브러리와 프레임워크 

라이브러리 - 애플리케이션 개발에 필요한 기능인 클래스,함수를 모아놓은 코드의 모음

프레임워크 - 소프트웨어 개발을 수월하게 하기 위한 소프트웨어 개발 환경 

 

  • 백엔드 개발자의 업무 *서버 측 애플리케이션을 개발

과제할당 - 과제분석 - 개발 - 테스트 - QA - 배포 - 유지보수

 


스프링 컨셉

  • 제어의 역전과 의존성 주입

스프링 - 제어의 역전(IoC) + 의존성 주입(DI) 기반

 

-IoC(Inversion of Control)

다른 객체를 직접 생성하거나 제어하는 것이 아닌 외부에서 관리하는 객체를 가져와 사용하는 것 

public class A{
	//b= new B();
    private B b;
}

 

-DI(Dependency Injection)

어떤 클래스가 다른 클래스에 의존하는 것 , IoC를 구현하기 위해 사용하는 방법

public class A{
	@Autowired
    B b;
}

*스프링 컨테이너에서 객체를 주입받아 사용함 

 

  • 빈과 스프링 컨테이너

-스프링 컨테이너

빈을 생성하고 관리함, 애너테이션을 통해 빈을 주입받을 수 있게 DI지원

 

-빈 

스프링 컨테이너가 생성하고 관리하는 객체 

 

  • 관점 지향 프로그래밍 AOP

AOP(aspect oriented programming)

부가 로직과 핵심 관점을 분리함 

 

  • 이식 가능한 서비스 추상화 

PSA(portable service abstraciton)

스프링에서 제공하는 다양한 기술을 추상화해 개발자가 쉽게 사용하도록 하는 인터페이스 

= 어느 기술을 사용하던 일관된 방식으로 처리하도록 하는 것