본문 바로가기

Server/Spring & AWS

[점프 투 스프링] 질문 및 요약정리 (1)

Spring boot : 자바의 웹 프레임 워크

spring 프레임 워크 + 톰캣(내장 서버)

ㄴ 톰캣 : 클라이언트가 요청을 하면 맞는 자바 프로그램을 실행시킨다, 배포되는 jar파일에도 적용된다

 

대표적인 웹 브라우저 보안공격

SQL 인젝션 SQL 주입공격
XSS js 삽입공격
CSRF 위조된 요청으로 공격
클릭재킹 의도하지 않는 클릭을 유도해서 공격

 

웹어플리케이션 -- WAS(software 플랫폼) -- 서버환경

 

Q. WAS가 필요한 이유?

웹 서버 : 정적콘텐츠(즉시 응답이 가능한 것들 : html 문서 등)를 제공한다

WAS : 데이터베이스 조회나 다양한 로직 처리가 필요한 동적 컨텐츠를 제공한다

기능을 나눠 서버부화를 방지한다

https://codechasseur.tistory.com/25

 

[Web] 웹 서버와 WAS의 차이를 쉽게 알아보자

서버 개발에 있어서 가장 기초적인 개념인 '웹 서버'와 'WAS(Web Application Servier)'의 차이점을 다뤄보려고 한다. 💡 웹 서버 사전적 정의 "웹 브라우저 클라이언트로부터 HTTP 요청을 받아들이고 HTML

codechasseur.tistory.com

 

Q. type maven과 gradle의 차이점은 무엇일까?

  1. 스크립트 길이와 가독성 면에서 gradle이 우세하다.
  2. 빌드와 테스트 실행 결과 Gradle이 더 빠르다. gradle은 캐시를 사용하므로 테스트 반복 시 실행 결과 시간의 차이가 더 커진다
  3. 의존성이 늘어날 수록 스크립트 품질의 차이가 커진다.
    Maven은 멀티 프로젝트에서 특정 설정을 다른 모듈에서 사용하려면 상속 받아야하지만, gradle은 설정 주입 방식을 사용하므로 멀티 프로젝트에 적합하다.

https://velog.io/@leesomyoung/Maven%EA%B3%BC-Gradle%EC%9D%98-%EC%B0%A8%EC%9D%B4-%EB%B0%8F-%EB%B9%84%EA%B5%90

 

Maven과 Gradle의 개념 및 비교

스프링부트 프로젝트를 하며 여러 가지 기능 구현을 하면서 여러 의존성 라이브러리를 추가해야하는 경우가 많았다. 따라서 추가하는 방법을 위해 공식 문서나 스택오버 플로우, 블로그 등을

velog.io

 

Q. gradle의 dependencies 종류는?

https://twinparadox.tistory.com/630

 

Gradle의 라이브러리 의존성 옵션 정리

익숙함 문득 웹 프로젝트 관련 내용들을 정리해나가면서, gradle 파일을 보니까 다음과 같은 부분이 눈에 들어왔다. dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'or

twinparadox.tistory.com

 

IP주소 : 컴퓨터 고유의 주소

포트 : 네트워크 서비스를 구분하는 번호; 기본값 8080

// 하나의 IP주소로 포트를 사용하여 많은 서비스 운용이 가능하다

// 로컬서버는 외부에서 접속할 수 없다

프로토콜 기능 포트번호
HTTP 웹서비스 80
HTTPS SSL을 적용한 웹서비스 443
FTP 파일전송 서비스 21
SSH, SFTP 보안이 강화된, TELNET과 FTP 22
TELNET 원격서버접속 서비스 23
SMTP 메일전송 서비스 25

 

 Q. HTTP와 HTTPS의 차이점은 뭘까?

HTTP 메시지는 일반 텍스트이므로, 권한이 없는 당사자가 인터넷을 통해 쉽게 액세스하고 읽을 수 있다. 

반면, HTTPS는 모든 데이터를 암호화된 형태로 전송한다. 사용자가 민감한 데이터를 제출할 때 제3자가 네트워크를 통해 해당 데이터를 가로챌 수 없다

https://devjem.tistory.com/3

 

HTTP vs HTTPS의 차이점을 알아보자

HTTP란? HTTP는 Hyper Text Transfer Protocol의 줄임말으로써 서버와 클라이언트간에 데이터를 주고 받는 프로토콜입니다. HTTP는 텍스트, 이미지,영상, JSON 등등 거의 모든 형태의 데이터를 전송할수 있습

devjem.tistory.com

 

HTTP 오류 정리

대표) 404 (HTTP 오류) : 브라우저가 요청한 페이지를 찾을 수 없을 때

https://hongong.hanbit.co.kr/http-%EC%83%81%ED%83%9C-%EC%BD%94%EB%93%9C-%ED%91%9C-1xx-5xx-%EC%A0%84%EC%B2%B4-%EC%9A%94%EC%95%BD-%EC%A0%95%EB%A6%AC/

 

[웹 프로그래밍] HTTP 상태 코드 표(100 ~ 500) 전체 요약 정리

서버에서의 처리 결과는 응답 메시지의 상태 라인에 있는 상태 코드(status code)를 보고 파악할 수 있습니다. 상태 코드는 세 자리 숫자로 되어 있는데 첫 번째 숫자는 HTTP 응답의 종류를 구분하는

hongong.hanbit.co.kr

 

Q. TELNET은 왜 필요할까?

거리와 관계없이 쉽게 원격시스템에 접속할 수 있기 때문이다

e.g. 텔넷으로 스위치를 관리하게 되면, 스위치에 연결된 수백대의 컴퓨터를 ip, 맥 주소를 (원격으로)관리하기 용이해지기 때문에 텔넷을 사용한다. 내 pc로 직원들의 네트워크를 관리할 수 있게되고, 스위치 장비의 설정을 할 수 있으니 네트워크 관리가 용이해진다.

취약점 : 모든 데이터를 평문으로 전송하여 ID/Password, 실행한 명령어에 대한 정보가 노출된다

 

브라우저 요청처리

Get : 데이터를 URL에 노출시켜 요청한다. 주로 서버에서 데이터를 조회하거나 읽기 위한 HTTP 프로토콜로 데이터를 서버로 전송하는 주요방식Post : 데이터를 숨겨서 요청한다. 로그인정보와 같은 민감한 데이터를 제출 및 저장한다

 

어노테이션 정리어노테이션 : 자바의 클래스, 메소드, 변수 등에 정보를 부여하여 부가 동작을 할 수 있게 하는 목적으로 사용된다

@RequiredArgsConstructor 사용법 알기

https://velog.io/@gillog/Spring-Annotation-%EC%A0%95%EB%A6%AC

 

[Spring] Annotation 정리

Annotation(@)은 사전적 의미로는 주석이라는 뜻이다. 자바에서 사용될 때의 Annotation은 코드 사이에 주석처럼 쓰여서 특별한 의미, 기능을 수행하도록 하는 기술이다.

velog.io

 

스프링부트의 라이브러리와 플러그인

Q. 플러그인이란?  

내가 사용하고 있는 프로그램에 어떠한 기능을 더하는 기능

https://sharonprogress.tistory.com/193

 

플러그인(Plugin)이란?

Spring의 의존성과 Maven을 공부하면서 플러그인이라는 단어가 자주 등장했다. Plugin이라는 단어에서 전기 플러그를 연결하듯 무엇인가를 더한다는 의미인것은 유추할 수 있었다. 심지어 내가 지금

sharonprogress.tistory.com

 

Springboot Devtoolsㄴ서버를 재시작하지 않아도 클래스를 변경할때 서버가 자동으로 재가동하게 해준다lombok : Getter() Setter() 메서드, 생성자 등을 자동으로 만들어준다. 자바 클래스의 속성값을 읽거나 저장할 때 사용한다

 

프로젝트 이름 + application = 프로그램의 시작을 담당하는 파일이다application.properties = 프로젝트 환경을 설정(환경변수, DB설정)한다ㄴDB사용준비 및 jpa 환경설정build.gradle = 프로젝트에 필요한 플러그인 + 라이브러리Junit = 자바의 테스트 프레임워크


Controller : URL 매핑; 웹 요청과 응답처리

ㄴAPI를 모아놓은 클래스이며 창구역할을 한다

ㄴAPI 명세서에 따라 URL을 매핑한다 (Swagger 사용법)

Service : 내부에서 자바 로직 처리

Repository : DB나 파일 같은 외부 I/O 구현

 

Service의 존재이유 : service는 정보변동의 위험이 큰 로직을 처리한다. DB원본 정보의 손상을 막기 위함이다

Repository와 JPA : 주어진 jpa(java persistence api) 인터페이스 메소드로 CRUD(create, read, update, delete)가 가능하다

ㄴ이렇게 하기 위해선 JPA repository가 필요하다 ; <기본키, 기본키타입>

Spring은 jpa를 사용해 DB를 관리한다. jpa(인터페이스 모음;ORM 기술의 표준) 실제 구현한 클래스

: 하이버네이트(ORM의 프레임 워크)

Q. 그럼 하이버네이트가 DBMS인가?

NO

하이버네이트는 자바 기반의 객체-관계 매핑(ORM) 프레임워크로, 관계형 데이터베이스와 자바 객체 간의 매핑을 담당한다. 즉, 개발자가 객체 지향적인 방식으로 데이터를 다룰 수 있게 도와주는 도구이다

https://livenow14.tistory.com/70

 

[DB] 하이버네이트(Hibernate)란?

ORM 기술에 대한 명세인 JPA(Java Persistence API)의 구현체의 한 종류 JPA의 구현체이므로 JPA의 특징을 함께 정리했어요. Hibernate란? 하이버네이트는 자바 언어를 위한 ORM 프레임워크에요. JPA의 구현체

livenow14.tistory.com

 

ORM(object relational mapping) : 자바문법으로 DB를 다룰 수 있도록해준다

DB table : jaba class를 만들어서 관리한다

ORM의 자바클래스 = 엔티티 = DB table과 매핑되는 자바 클래스

DBMS (database management system) : 데이터베이스를 관리하는 소프트웨어

ㄴDB는 데이터를 담는 통, DBMS는 이 통을 관리하는 역할을 한다

H2 : 자바기반의 경량 DBMS

 

API :  API는 프로그램과 프로그램 간 다리, 프로그램을 위한 인터페이스이다. 조금 더 자세하게 설명하자면 데이터를 주고 받기 위한 방법과 그 규격을 뜻한다

엔티티 클래스 : DB에 데이터를 저장하고 조회하는 클래스 ; 엔티티 클래스는 주로 데이터베이스의 테이블과 매핑되는 객체를 나타낸다

DTO 클래스 : DB로 조회한 데이터를 관리하기 위한 클래스 ; 주로 서비스 간에 데이터를 전송하기 위한 객체를 나타낸다

https://velog.io/@wbo1026/SpringBoot-%ED%8C%A8%ED%82%A4%EC%A7%80-%EA%B5%AC%EC%A1%B0

 

[Spring] SpringBoot 패키지 구조

Spring Boot 프로젝트 구조 [그림1] 기본적인 Spring Boot 프로젝트 아키텍처 Spring Boot의 기본적인 프로젝트 아키텍처는 [그림1]과 같으며, 아키텍처에 사용되는 용어들을 알아보고 실제 프로젝트 작업

velog.io