작성일: 2023.06.13(화)
KT AIVLE AI 개발자 트랙 3기 과정의 마지막인 빅프로젝트를 진행하고 있습니다.
Daily Scrum
내 역할, 협업 내용, 나머지는 팀원 담당
What did you do yesterday?
- spring 기초 공부
- react 기초 공부
- Wi-Fi 데이터 수집 가능성 확인
What will you do today?
- spring 기초 공부
- SW개발 관련 규제 준수 가이드 확인
- react 기초 공부
- react 컴포넌트 트리 초안 작성
- Wi-Fi 데이터 수집 및 AI 모델링
Are there any impediments in your way?
What I did today
스프링 입문
- 회원관리 예제를 따라해보며 웹 MVC 개발을 공부함
H2 데이터베이스
- 개발, 테스트 용도로 사용하는 가벼운 DB
- 웹 화면도 제공해줌
- 맥 터미널에서 h2를 다운받은 경로로 이동하여
./h2.sh
실행하면
홈 디렉토리에 test.mv.db
가 생성됨
- 충돌 등의 문제가 발생할 수 있으므로 h2 접속할 때
jdbc:h2:tcp://localhost/~/test
로 접속 권장
DataSource
- 데이터베이스 커넥션을 획득할 때 사용하는 객체
- 스프링 부트는 데이터베이스 커넥션을 바탕으로 DataSource를 생성하고 스프링 빈으로 만듦 -> DI 받기가 가능해짐
Jdbc
- Java Database Connectivity
- Java와 DB를 연결해주는 자바 API
'JDBC API로 직접 코딩하는 것은 20년 전 이야기'라고 함...
OCP: Open-Closed Principle
- 개방-폐쇄 원칙으로 확장에는 열려있고 수정과 변경에는 닫혀있어야 하는 객체지향 원리
- 스프링의 '의존성 주입(DI)'를 사용하면 인터페이스에서 '기존 코드를 변경하지 않고' 구현체(클래스)를 바꿀 수 있다는 점에서 큰 장점을 가짐
테스트
@SpringBootTest
@Transactional
- 테스트 케이스에 달면 테스트 실행 시 트랙잭션을 실행하고 DB에서 데이터 쿼리를 처리한 후 Rollback을 통해 변경사항을 반영하지 않음
- 이를 통해 반복해서 테스트를 실행 가능
- 서비스에 붙으면 롤백 없이 실행(
@Commit
이 있으면 커밋함)
단위테스트 vs 통합테스트
- 단위테스트가 대체로 훨씬 좋은 테스트 방법 -> 단위를 잘 쪼개는 것이 중요
- 따라서, 스프링 컨테이너 없이 테스트할 수 있는 능력이 중요
JdbcTemplate
- JDBC API에서의 반복 코드를 대부분 제거해주는 역할
- SQL은 직접 작성해야 함
JPA
- Java Persistence API
- 기존의 반복 코드뿐만 아니라 기본적인 SQL도 직접 만들어서 실행해줌
- 객체 중심의 설계를 가능하게 함 + 개발 생산성 향상
조별 코칭
- 금주 목요일에 Web파트와 AI파트에서 무엇을 할 것인지 아래 내용들을 '시각적'으로 보여주어야 함
- 진척도를 퍼센티지(%)로 표현할 것
- Web: 어떻게 구현할 것인지, 어떤 이슈사항이 있는지
- AI: 데이터 수집, 모델링 결과 등 진행상황이 어떤지, 이후 과정은 어떻게 할 것인지, 이슈사항 및 개선사항
Good
- AI 동작 시나리오를 체계적으로 만드려고 한점
- 데이터 수집 과정
Bad
- Web 개발 구현 속도가 다른 팀 대비 느린 편
기타
리액트 컴포넌트 트리
- 프론트 담당 팀원이 만든 프론트 구현 계획
마치며
스프링 입문을 거의 다 들으면서 개념을 익힌 상태인데,
이제 본격적으로 JPA를 배우면서 프로젝트에 이를 적용해보고 싶다는 생각이 강해지는 중이다.