일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- https
- 클라우드 서비스 개발 #
- Gradle
- 맥OS
- dbeaver
- 도메인
- spring
- jdk
- 클라우드 서비스 개발
- 우리FIS아카데미
- 리눅스
- 우리FISA
- 우리FIS아카데미 #
- route 53
- HTTP
- 맥북
- 우리FISA #
- AWS
- 우리에프아이에스
- M2
- K-디지털트레이닝
- 맥
- 우리에프아이에스 #
- sts
- Java
- mysql
- springboot
- 로드밸런스
- 글로벌소프트웨어캠퍼스
- Today
- Total
<<개발일지>>
우리 fisa 2기 '클라우드 서비스 개발' 11주차 본문
정신 없이 하루를 보내고 있는 요즘 나는 핀테크 전문가가 되기 위해서 이래저래 계획을 세우며 진행하고 있다.!!
좀 더 나를 다스리며 메타인지능력을 기르고, 정말 내가 무엇이 필요하고 어떻게 나아가야할지 끊임없이 생각하며 추진하고 있다.
이번 주차는 이러한 생각을 더욱 강하게 만들었다 !!
일상 얘기
현장 체험 학습을 가다!
이번 주는 우리 fisa에서 주최하는 우리은행 본사가 있는 명동 현장 체험학습을 진행했다 !!
룰루~
항상 우리fis 가 있는 상암동으로 갔었지만 명동으로 출근하다뉘 ~ 가는 시간도 ㅋㅋ 무려 1 시간이나 줄었다!!!
잘 도착했더니 똭 !! 우리를 위한 자리가 마련이 되어있었다.
현장에서 일하는 우리금융 개발자들의 강의를 들을 수 있었다 !!
이 날의 커리큘럼은
- 마이데이터
- 블록체인
- 우리은행박물관 견학
- 우리은행의 역사
- 새롭게 출시될 NewWON의 이해
- 디지털 금융시스템의 이행
이렇게 구성되었다.
각 강의는 현장에서 일하시는 유능한 선배 개발자분들께서 강의를 해주셨는데, 금융권 개발자의 역할과 방향에 대해 알 수 있었고,
무엇보다 우리금융에는 유능한 개발자가 많이 있다는 것을 느낄 수 있었다 ㅎㅎ(나도 가고 싶다!!)
*자세한 강의 내용은 보안상 언급할 수가 없다ㅠ
우리는 우리금융 본사에 있는 박물관을 견학을 했다 !! 생각보다 우리은행의 역사는 엄청나게 길었다 ,,
우리나라의 아픈 역사와 함께 성장한 기업이었다!
그 사이 우리금융은 많은 위기가 있었지만, 끈기와 지혜로 현재까지 유지를 했더라구요!! 대단했다..!👍
그러다보니 다양한 은행의 역사의 흔적을 볼 수 있었는데 ~
저금통
이렇게 나라별 다양한 저금통을 볼 수 있었다.
또한,
우리나라 아픈 역사 기간이었던 일제 강점기 때 일본 은행이 우리나라에서 은행업무를 보기 위한 장부도 볼 수 있었다.
그리고 우리은행이 현재에 있기 까지 많은 사람들의 노고가 있었음을 알 수 있었다 !!
이 외에도 다양한 것들이 있었지만 사진 찍는 것보단 눈으로 보고 느끼는 것이 중요하다고 생각하기도 하고, 하나하나 집중해서 보느라
사진을 많이 찍지는 못했다 키키.
그렇게 박물관을 다 돌다보니 이렇게 여러 기념품 까지 얻을 수 있었다 ㅋㅋ 저 A4용지의 도장은 우리은행의 첫 시작인
'대한천일은행 창립청원서 및 인가서' 이다 즉, 최초 설립을 위한 인가서인 셈이다 !! 처음에는 어떤 의미인지 제대로 파악하지 못한채 마구 찍어서 나왔는데 이렇게 큰 의미가 담긴 도장이었다니 ... 잘간직해둬야겠다 😀
그리고 현재 우리은행 모델인 아이유님~!! 친필 싸인 까지 받은 우리은행 엽서 ? 를 받을 수 있었다.
우리 fisa는 중간 중간에 좀 더 현실적인 감각을 키워주기 위해 많은 노력을 하는 것 같다 ㅎㅎ 우리 fisa가 원했던 동기가 되었을까 !? 나는 핀테크 개발자로서 큰 성장을 해보고 싶다는 생각을 다 시 한 번 하게 되었다 !!
두둥 우리fisa에서 자격증 지원을 해주셨다 !!! ㅋㅋㅋ 공부만 하면 된다니 너무 좋자나 ~~
그래서 나는 정처기도 넣었지만 바로 연달아서 진행할 SQLD까지 지원하게 되었다 ㅋㅋㅋ
(2월 저ㅓ어어어엉말 바쁠 예정...😢) 하지만 !! 해 내 겠다 ㅋㅋ (합격 안 하면 환불 이라던데 ㅋㅋㅋ 장난 ㅎ)
가보자고 !
이 번 주는 특별한 날과 좋은 날이 많았는데 겹경사가 일어났다!! 바로 2회차 5주 연속 우수블로그 상을 받았다 🙃
저번에는 한 주차로 상을 받는 스타벅스 상품권이었지만 5주 연속 작성자 중 최고 우수상이 받는 건 좀 더 큰 스케일 문화상품권을 받았다 !!
기록 남기는 것을 즐겨하면서 이렇게 받으니 기분이 너무 좋다 ㅎㅎ 더욱 꾸준히 정성스럽게 써야겠다는 생각이 드는 날이었다!
공부 얘기
1. 이번 주 배운 것
이번 주는 Spring에 대해 깊게 배웠고, REST API 를 활용하는 포스트맨에 대해 학습했다.
Spring의 등장
: 대규모의 복잡한 데이터를 관리하는 애플리케이션인 엔터프라이즈 애플리케이션은 소프트웨어 분야가 발전하면서 더욱 복잡해졌다. 예를 들어 은행 시스템을 생각해보면 몇 천만의 사람이 한꺼번에 잔고 조회를 하고, 입금이나 출금을 하거나 새로운 통장을 개설하기도 한다. 이렇듯 엔터프라이즈 애플리케이션은 많은 사용자의 요청을 동시에 처리해야 하므로 서버 성능과 안정성, 보안이 매우 중요하다. 그런데 이런 것들을 신경쓰면서 비즈니스 로직까지 개발하기는 매우 어렵다.
이러한 상황에서 Spring 프레임워크가 등장했다. Spring 프레임워크는 매우 높은 수준으로 서버 성능, 안정성, 보안 등을 제공하는 도구이다. 이로써 개발자들은 기능 개발에 집중할 수 있게 되었다.
Spring Boot의 등장
: 스프링은 장점이 많은 개발 도구이지만 설정이 매우 복잡하다는 단점이 있었다. 이를 보완하고자 Spring Boot가 출시되었다. Spring Boot는 Spring 프레임워크를 더 쉽고 빠르게 이용할 수 있도록 만들어주는 도구이다.
Spring은
IoC(Inversion of Control) / DI(Dependency Injection)
PSA(Portable Service Abstraction)
AOP(Aspect Oriented Programming)
이렇게 3가지로 구성되어 있다.
<<Spring Boot 프로젝트 만들기>>
1. 스프링 부트 프로젝트를 생성하기 위해 그레이들 프로젝트 수정하기
Spring boot 프로젝트를 생성하기 이전 Gradle 프로젝트가 만들어지는데 빨간 박스를 친 build.gradle에 들어가서 Spring Boot 프로젝트로 변경시킬 수 있다.
id와 dependecy를 우리가 사용할 Spring Boot 버전으로 만들어주고, JPA 역시 사용하기 위해서 의존성에 추가해준다.
그 다음, 나의 DB에 접근할 수 있게 resources 폴더 아래 application.properties를 추가한 뒤에
이렇게 MySQL에 접근할 수 있게 설정해준다.
설정을 맞쳤다면, java 폴더 나의 도메인 (me.jihooo) 아래 springbootdeveloper 패키지를 만든다.
모든 프로젝트에는 메인 클래스가 있어야 하기 때문에 SpringBootDeveloperApplication을 메인 클래스로 잡고 위와 같이 설정해준다.
이는 향후 Spring Boot를 실행시켜주는 역할을 한다!
그 다음 TestController를 통해 Mapping을 Get 요청을 받을 시 어떻게 실행할지 Controller를 만들어준다. 여기서는 /test로 갈때 Hello를 출력하게 했다.
이때 @RestController는 @Component를 가지고 있으므로 빈으로 등록이 되고 Spring이 관리할 수 있게한다. 또한 라우터의 역할로서 HTTP와 이 자바코드가 연결되게 만들어주는 역할을 한다.
그렇게 서버를 실행시키면 return 했던 Hello가 보인다. 이렇게 되면 기본 Spring Boot setting은 끝났다고 볼 수 있다.
<<테스트 코드>>
Spring Boot에서도 Test 코드 기능을 가지고 있는데 우선 테스트를 준비하는 given, 테스트를 진행할 값 진행하는 when, 테스트 결과를 검증하는 then으로 나눈다.
이때 테스트 방법은 크게 두 가지 방식이 있다.
1. JUnit
: 단위 테스트를 할 때 사용하는 자바 테스트 프레임워크이다. @BeforeAll 어너테이션으로 설정한 메서드가 실행 되고, 그 이후에는 테스트 케이스 개수만큼 @BeforeEach -> @Test -> @AfterEach의 생명주기를 가지고 실행한다. 모든 테스트가 완료가 되면 @AfterAll 애너테이션으로 설정한 메서드가 실행되고 종료된다.
이때 Assertion.assertEquals(기대값, 계산값) 으로 넣게 되는데 명시적이지 못한 한계가 있어 헷갈림이 발생할 수 있다.
그래서 이를 명확하게 해주고자 해결한 방법이 AssertJ 방식이다.
2.AssertJ
: JUnit과 함께 사용해 검증문의 가독성을 높여주는 라이브러리이다.
이렇게 하면 assertThat(내가 넣는 값).isEquals(이것과 같아야 한다.) 형식으로 훨씬 명시적으로 만들 수 있다.
*isEquals 말고도 다양한 메서드가 있다!
<<ORM 프레임워크의 대표 JPA>>
ORM (Object-relational mapping) : 자바의 객체와 데이터베이스를 연결하는 프로그래밍 기법이다. 자바에서는 JPA(Java persistence API)를 표준으로 한다. JPA는 인터페이스이고 실제 사용을 위해서는 구현체가 필요한데 이게 바로 저번 주에 배운 Hibernate이다. Hibernate의 목표는 자바 객체를통해 데이터베이스 종류에 상관없이 데이터베이스를 자유자재로 사용할 수 있게 하는데 있다.
JPA 중에도 Spring을 위한 JPA가 존재하는데, 기존에는 엔티티의 상태를 직접 관리하고, 필요한 시점에 커밋을 해야 하는 등의 개발자가 신경 써야 할 부분이 많았다. Spring data는 비즈니스 로직에 더 집중할 수 있게 데이터베이스 사용 기능을 클래스 레벨에서 추상화했다.
Spring Data JPA
여기서는 JpaRepository를 사용해서 각 테이블과 연결을 한다.
이렇게 해서 JpaRepository 에 있는 메서드를 사용해서
CRUD를 진행한다.
*만약 다른 Entity(테이블)을 연결하고 싶다면 JpaRepository<[원하는 엔티티 이름], 기본키 타입>을 넣어서 이를 상속하는 인터페이스를 하나 더 만들면 된다.
<<포스트 맨>>
포스트맨 은 REST API 테스트 및 개발을 위한 인기 있는 클라이언트 애플리케이션이다. 포스트맨을 사용하면 RESTful 웹 서비스를 테스트하고 디버그할 수 있으며, API 개발 및 문서화 작업을 용이하게 할 수 있다. 포스트맨은 API 요청을 만들고 보내고, 응답을 확인하고, 요청을 저장하고 공유할 수 있는 도구이다.
좀 더 자세히 말하면 우리는 이것을 통해 DB에 있는 데이터를 JSON 파일로 가져올 수 있고 또는 포스트맨을 통해 데이터를 추가 또는 수정을 할 수 있다. 이를 활용하여 API를 만들어 다른 개발자나 팀원과 공유할 수 있다.
*데이터가 오고 갈때는 JSON 형태를 주로 사용한다.
2. 이번 주에 겪은 시행착오와 극복
이번 주에 겪은 시련은 맥북의 최고의 고지인 Spring과의 전투였다 ㅋㅋㅋ Spring 자체가 문제가 있지는 않지만 수업 기반이 윈도우 기반인 것과 좀 더 구조적으로 파악하기 위해 레거시한 Spring을 활용한 것이 화두 였다 ㅋㅋ!!! 그냥 에러가 아니라 그냥 안 되는 거였다 ㅠㅠ 수업은 이클립스 전용 Sts 버전 3을 활용했지만, 맥북 m시리즈 부터는 Sts 4 버전 이후로만 있었다.. ㅠㅠ 그래서 또 다시 맥북 유저들이 피를 보기 시작했는데~~
그래도 맥북 유저들은 이런데 굴복하지 않는다구 남궁성 강사님이 이런 맥북유저들을 위해서 레거시 프로젝트를 이용할 수 있게끔 미리 맥북용 프로젝트를 만들어 놓으셨다 ㅎㅎ 그거 가지고 겨우겨우 따라갔지만 완전한 최적화는 아니기 때문에 중간 중간에 성가신 일이 한 두가지가 아니었다..
그러다 보니 수업도 놓치고 했지만 그동안 쌓여왔던 맥북 에러를 다루는 노하우와 어찌 어찌 맥북유저들끼리 똘똘 뭉치고 동기들의 도움을 수업을 열심히 따라갔다 ㅋㅋㅋ (강사님이 미리 맥북 유저들에게 경고를 준 이유를 이제야 깨둘...) 하지만, 그럼에도 불구하고 해냈다... 피를 보고 뚜들겨 맞아서 절뚝거리지만 결국 해냈다구요! (물론 좀 지쳤다 ㅋ) 이제는 Spring Boot를 사용하면 되기 때문에 이러한 문제는 없을 것이라 믿는다 ㅋㅋㅋ ㅠ
3. 앞으로 어디에 적용
대규모의 복잡한 데이터를 관리하는 애플리케이션인 엔터프라이즈 애플리케이션은 소프트웨어 분야가 발전하면서 더욱 복잡해졌다. 예를 들어 은행 시스템을 생각해보면 몇 천만의 사람이 한꺼번에 잔고 조회를 하고, 입금이나 출금을 하거나 새로운 통장을 개설하기도 한다. 이렇듯 엔터프라이즈 애플리케이션은 많은 사용자의 요청을 동시에 처리해야 하므로 서버 성능과 안정성, 보안이 매우 중요하다. 그런데 이런 것들을 신경쓰면서 비즈니스 로직까지 개발하기는 매우 어렵다.
하지만 Spring과 거기에 더 업그레이드 된 Spring Boot로 기능 개발에만 신경을 쓸 수 있게 되었다. 이번 주차에 이를 배움으로써 앞으로 프로젝트를 효율적으로 진행할 수 있겠다는 생각을 했다. 그리고 이제 전반적으로 프론트엔드와 백엔드의 큰 틀을 거의 다루었기 때문에 전반적인 흐름을 파악할 수 있는 계기가 되었다.
다음 주차에 있을 프론트앤드 + 백앤드를 합친 프로젝트가 진행이 되는데, 잘 응용해서 완전히 내 것으로 만들어 보는 시간이 되었으면 한다!
4. 현재까지의 학습 평가 및 다음 학습을 위한 다짐/목표
-수업-
마지막 관문 Spring이 거진 막을 내렸다!! 끝까지 잘 버티고 잘 싸웠다 ㅋㅋ ㅠ 이제는 여태 배운 것들을 꾸준히 정리하고 복습을 하면서 내 것으로 만드는 시간을 가져야겠다. 여기서 주는 프로젝트 외에도 개인적인 프로젝트도 진행해서 좀 더 경쟁력있는 개발자로 성장하고 싶다.
-코테-
이번 주는 DFS와 BFS에 대해 공부를 했다. 처음 접하다보니 조금 혼란스럽기는 했지만 계속 써보고 여러 문제를 접하다 보니 감이 잡히기 시작했다. 다음 주 부터는 이를 활용한 여러 문제를 풀게 될 것인데 배웠던 것들을 잘 정리해서 차근차근 풀어 볼 예정이다~~!!
-정처기-
개념서는 거진 다 돌렸다. 다음 주 부터는 기출을 돌리면서 2월 17일에 있을 시험을 철저히 대비하자!
-프론트 앤드-
이제 좀 안정적인 상황으로 다시 오고 있으니 프론트 앤드 복습도 다시 조금씩 시작을 해보자. 다음 주 프로젝트때 프론트앤드도 다루니 탄력을 받아 공부를 이어나가면 될 것 같다!
-백앤드 복습(Spring Boot)-
예전에 사놨던 Spring Boot 책을 다시 보기 시작했다 !! 저번에는 이해가 잘 안되었던 부분이 많았는데 수업을 듣고 그 사이 실력도 상승해서 그런지 이해하는 속도도 빠르고 오히려 능동적으로 꼭 책으로만 하지 않고 나에게 맞게끔 커스텀하기도 한다. 대견대견~
아무튼 ! 이 책도 한 번 돌리면서 백앤드 복습을 진행하려고 한다!
-기술 세미나 대비-
나는 HTTP/ HTTPS를 주제로 삼고 진행할 예정인데 이 주제는 정말 중요한 내용이고, 한 번쯤은 정리가 필요했기에 이번 기회에 하려고 한다 이제 슬 자료를 찾아가며 기술세미나를 준비해야겠다.
잘 하고 있다 !! 다음 한 주도 잘 해보자 !!!
파이팅 ☀️
'우리FISA2기_성장기록' 카테고리의 다른 글
우리 fisa 2기 '클라우드 서비스 개발' 13주차 (107) | 2024.02.18 |
---|---|
우리 fisa 2기 '클라우드 서비스 개발' 12주차 (84) | 2024.02.11 |
우리 fisa 2기 '클라우드 서비스 개발' 10주차 (1) | 2024.01.28 |
우리 fisa 2기 '클라우드 서비스 개발' 9주차 (1) | 2024.01.21 |
우리 fisa 2기 '클라우드 서비스 개발' 8주차 (6) | 2024.01.14 |