사이드 프로젝트 회고..?! 백엔드는 혼자하니까,,, ㅜ😛
1. 프로젝트 설명
어떤 프로젝트를 진행하였는지 프로젝트의 목적, 구현하고자 했던 기능, 기술 스택 등 프로젝트에 대한 설명을 먼저 하자.
우리는 개인 졸업전시 프로젝트를 구현하려고 한다.
- 2023/03/13 ~ 2023/03/20 이번주에 해야될 일을 미리 git issue에다가 올려놓았다.
1. [프로젝트] one page proposal 작성한다.
2. [프로젝트] 디스코드와 깃허브를 연동한다.
3. [DB] E-R diagram 작성
- 루시드차트를 이용해서 ERD를 작성해 보았다.
4. [API] API 리스트업
5. [DB] 전국 대학교명 저장하기
- 매년 올라오는 학교개황 파일을 이용해 MySQL DB에 저장해보았다.
6. [프로젝트] Java + Spring 개발 환경을 구축한다.
- IDE(Integrated Development Environment)는 IntelliJ 사용합니다.
- Gradle을 이용하여 프로젝트에 필요한 라이브러리를 추가하고, 이를 관리합니다.
2. KPT 작성
[개인회고를 위한 Keep/ Problem/ Try]
- Keep: 프로젝트 완료 후에도 간직하고 싶은 잘했던 것 / 좋았던 것ex) "~기술 적용을 했더니 효율적으로 ~를 할 수 있었다."
- Problem: 프로젝트 중 겪었던 어려움(기술, 소통, 협업, 에러 등 프로젝트 진행 관련된 그 어느것이든) / 프로젝트 완료 후에도 아쉬움으로 남는 것ex) "~기능 적용 중 ~이슈가 발생하였다."
- Try: Problem 중 해결된 사항에 대한 해결 방법 / 해결되지 않은 사항에 대한 피드백ex) "~기능 적용 중 발생한 ~이슈 해결을 위해 ~를 하였다."
Keep / Problem / Try 를 작성한다.(작성 중 기술적인 설명이 필요한 경우 새로운 게시물을 작성한 뒤 링크로 연결해주자)
Keep:
1. 한페이지 제안서 쓰면서 다른사람에게 한번에 무슨 프로젝트를 하려고 하는지 알 수 있게하는 방법을 얻은거 같아서 좋았다.
2. discord 채팅방에서 git에 활동내용과 링크를 한번에 주니까 좀 더 효율적으로 일할 수 있었던거 같다.
3. ERD에 대해서 공부할 수 있는 기회였고 ERD를 쉽게 그릴 수 있는 루시드차트를 알 수 있어 좋은 경험이었다.
4. API 작성법을 고민하고 조금은 이해할 수 있었다.
5. 엑셀파일에 데이터를 Java에서 어떻게 읽어서 DB에 저장할 수 있는지 방법을 얻어, 내년에 새로운 데이터가 바뀌더라도 쉽게 데이터 처리를 할 수 있었던거 같아 좋은거 같다.
6. 개발환경 셋팅이 반이라는 말이 맞는거 같다. 해당버전에서 맞는 Dependency를 찾는것도 좋은 경험이었지만 아직 계속 해야될 일인거같다.
Problem:
3. 5번 과정에서 데이터를 처리하다가 ERD가 잘못되었던걸 알았다. user table에서 대학교 table을 fk로 처리해야 되는데 반대로 매핑해버렸다.
4. 아직 효율적으로 API작성하는 방법을 몰라서 그런지 좀 많이 어려웠다. Spring에서 pathvariable을 이용해서 처리하는 방법이 유용한거 같은데 다시 작성해야 될거같다.
5. POI 라이브러리를 이용해서 처리하는데 gradle에 MySQL 버전을 입력안하면 Spring Boot에서 잘 맞는 버전으로 자동으로 되는줄 알았는데 처리가 잘 되지않았다.
try:
5.
application.yml 에서 Driver를 자꾸 찾지못해 많이 찾아봤던거 같다.
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
버전을 등록하니까 모든 문제가 해결되었고
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
runtimeOnly 'mysql:mysql-connector-java:8.0.32'
필드에 driver내용이랑 아이디 비번이 노출되니까 @Value를 통해서 처리하려고 하다가 @Componet도 달아주고 했는데 경로문제인지 잘 되지않았다.
그리고 굳이 Spring에 등록하지 않아도 될거같아서 다른 방법을 찾다가 snakeyaml 을 이용해서 처리했다.
Map<String, Object> datasource = YmlReader.datasourceReader("application.yml");
String dbUrl = (String) datasource.get("url");
String id = (String) datasource.get("username");
String password = (String) datasource.get("password");
String driverClassName = (String) datasource.get("driver-class-name");
public static Map<String, Object> datasourceReader (String filename){
Yaml yaml = new Yaml();
InputStream inputStream = ExcelConnection.class.getClassLoader().getResourceAsStream(filename);
Map<String, Object> obj = yaml.load(inputStream);
return (Map<String, Object>)((Map<String, Object>) obj.get("spring")).get("datasource");
}
3. 느낀점
감정적이든 기술적이든 그 어떤 부분이든 해당 프로젝트를 진행하면서 느낀점이 있다면 무엇이든지 자유롭게 적는다.
겨울방학 동안 기초가 중요하다고 생각해 Java의정석과 객체지향의 의미가 크게 와닿지는 않아서 디자인패턴 책도 읽어봤다. 책을 읽을 때는 하루하루 모르는 내용을 알 수 있으니까 마음이 편하게 공부하면서 내 자신이 성장하는 모습을 보니까 기분이 좋았다. 하지만 내가 직장에 다닌다면,,, 모르는 기술을 사용해야 된다면? 책을 읽고 언제 개발하겠냐,,, 라는 생각이 문득 들기 시작했다. 시험기간이 되기 전에 좀 많이 처리하려고 issue를 엄청 많이 넣었는데 그래도 부족한 점은 있지만 ERD랑 API빼고는 다 해결한거 같고 나한테 부족한게 무엇인지 알았던것도 좋은 경험인거 같고 이번 프로젝트를 통해 안될때는 짜증나고 고통스럽겠지만 난 해결할거라는 세뇌를 걸고 ㅋㅋㅋ 성장해보겠다!!!
Reference
'개발 > 첫 번째 프로젝트' 카테고리의 다른 글
[3주차] 해결한 문제,,, (0) | 2023.03.30 |
---|---|
[2주] 사이드 프로젝트 회고 (0) | 2023.03.27 |
모두의졸전 (0) | 2023.03.15 |