application.yml
파일에 다음과 같이 작성한다.
spring:
datasource:
url: jdbc:mysql://localhost:3306/basic1__dev
username: lldj
password: **** # dbms의 계정 비밀번호
driver-class-name: com.mysql.cj.jdbc.Driver
thymeleaf:
cache: false
prefix: file:src/main/resources/templates/
devtools:
livereload:
enabled: true
restart:
enabled: true
jpa:
hibernate:
ddl-auto: create
properties:
hibernate:
show_sql: true
format_sql: true
#use_sql_comments: true
server:
port: 8010
애플리케이션에서 DB를 다루기 위한 프로그램
DB종류마다 다양하다.
JPA를 사용하는 경우
SpingDataJPA -> Hibernate(JPA 구현체) -> DB드라이버(JDBC 구현체) -> DB
의 과정을 거친다.
JPA는 하나의 규약이고 인터페이스이고 이를 구현한 것이 Hibernate이다.
JPA를 이용하는 리포지토리는 SpringDataJPA 라이브러리를 이용하면 리포지토리의 실제 구현을 대폭 줄일 수 있다.
public interface MemberRepository extends JpaRepository<Member, Long> {
Optional<Member> findByUsername(String username);
}
JpaRepository 인터페이스를 상속한 인터페이스만으로 기존의 리포지토리를 대체할 수 있다.
findById와 같은 것들은 이미 구현메서드를 상속받고 있어 새로 구현할 필요가 없고 새로운 메서드같은경우 규칙에맞는 메서드명을 짓기만 하면 정의하는 것만으로 사용가능하다.
프라이빗: 특정 회사에 맞춘 맞춤 클라우드 예)IBM
퍼블릭: 여러 회사들을 위한 클라우드 예)AWS, Azure,...
기존엔 서버 하나에 모든 기능이 들어감
이걸 영역별로 마이크로서비스로 나눔
Monolithic Application -> MicroService
-> Docker -> Kubernetes
도커: 운영환경 구축에 용이
쿠버네티스: 수많은 도커의 컨테이너의 관리를 위해 사용
퍼블릭클라우드&쿠버네티스가 이 둘을 병행하게 한다. 이것들 덕에 백엔드 개발자들도 애플리케이션이 동작하는 지 확인하기 용이해지기 때문.
운영은 특히 중요한 부분.
서비스를 어떻게 나눌 건지 정할까, 무슨 DB를 사용해야 할까 -> 성능 향상 -> 클라이언트에 전달 방법 정하기
계획 -> 개발전 -> 테스트 -> 런칭 -> 지원&향상
여러 지표들을 확인하면서 애플리케이션에 문제가 없는지 확인
사전작업 -> 코드를 어떻게 할 지 -> 어떻게 빌드할지 -> 테스트 방법,정책 -> 릴리즈 -> 배포 -> 운영 -> 모니터링 방법 -> 피드백
개발과정을 어떻게 할 지를 결정
팀&회사 내의 개발환경에 대한 피드백을 받고 개선
스스로 고민해본 답이 면접에서의 답변이다.
지금 사용하는 언어로 코테준비할 수 있는 기회는 지금뿐이다.
내가 설명하지 못하는 프로젝트는 오히려 독이다