기록/WIL

[이노베이션 캠프]4주차 WIL

쥬냥냥 2022. 8. 28. 21:40

느낀점 

이번주는 주특기 숙련 주차로 스프링으로 서버를 만드는 부분에 대해 더 깊이 알아보는 과정을 겪었다. 주특기 입문주차와 달리 한번 어느정도 개념을 잡고 간 다음이라 이해하는 부분에 대해서는 빨리 전반적인 개념과 알고리즘 자체는 이해했지만 역시나 실전으로 도입해 JPA와 JSP, JWT를 통해 사용자 인증을 통해 인증 된 사용자만 글 작성이 가능한, 회원가입, 로그인 API와 이를 버에 적용해 기존의 기능들과 엮을려니 너무 헷갈리고 어려웠다. 기본적으로 개념을 잡았지만 아직 뒤죽박죽이고 정말 기초적인 부분만 잡힌거라 정작 중요하거나 필요한 부분이 어려웠고 원리는 이해가 되도 지속적인 오류에 스스로 노력을 더해야하는 구나 생각했다. 그러다가 정말 딱 어느정도 막히는 부분이 풀렸을때는 그 무엇보다 기뻤다. 진짜 느끼는 건데 코딩의 묘미는 에러를 잡고 실제로 내가 생각한 알고리즘에 대해 딱 풀렸을 때 그 기쁨이 엄청난 거 같다. 하지만 그만큼 시간도 많이 잡아 먹고 노력이 필요한 부분이기에 조금씩 느슨해지는 내 행동이 열심히 해야겠다는 생각으로 많아졌다. 이번주는 하나씩 풀어가긴 했지만 실제로 풀 때  혼자 해보다가 도저히 안되서 다른사람의 코드나 도움을 많이 받아서 진행하다보니 더욱 부족한 부분에 대해 느꼈고 그래도 조금씩 해결하가는 그 과정이 더욱 노력해 다음에는 다른 팀원들을 도울 수 있는 수준까지 실력을 기르고 싶다는 생각이 들었다. 


배운점

이번주는 기본적으로 회원가입과 로그인을 통해 TOKEN 발급으로 서버에 접속해 API를 이용할 수 있게 하는 권한부여, JPA(자바 진영의 ORM 기술 표준으로, 인터페이스의 모음)와 JSP(java 언어를 기반으로 하는 Server Side 스크립트 언어), JWT(유저를 인증하고 식별하기 위한 토큰)를 통해 구현하고 그 과정을 이해할 수 있었다.  또한 인증을 한 후 에 실질적으로 서버와 사용자에게 request를 받아 이를 객체와 관계형 데이터 베이스의 데이터를 자동으로 매핑해주는 ORM(sql을 자동으로 생성해-> 데이터 부분에 대해 신경을 덜 쓸 수 있어서 사용자가 비지니스 로직에만 더 집중할 수 있음)을 통해 서버의 데이터를 저장해 실질적인 구동 과정을 진행하고, 이렇게 데이터를 관리하는데 SQL(관계형데이터 베이스 관리시스템<rdbms>의 데이터를 관리하기 위해 설계된 특수 목적의 프로그래밍 언어)의 언어를 실질적으로 만들어낸 서버에서 데이터를 직접 설계한 api 대로 관리해보고 h2 db를 통해 간단히 이런식으로 sql 문법을 통해 데이터를 관리하는데 숙지할 수 있었다. 그리고 이런 모든 api 설계, 코딩 과정에서 만약 로직을 분리를 안시키고 한번에 정의된다면 나중에 에러가 나거나 수정할 부분을 찾아 유지보수하기 힘들어진다. 이런부분을 방지하기 위해 좀 더 쉽고 편리하게 사용할수 있게하는 디자인 패턴인  MVC(사용자의 인터페이스, 데이터 및 논리 제어를 구현하는데 널리 사용되는 소프트웨어 디자인패턴)를 이용해 프로젝트를 구성할때 Model(애플리케이션의 정보, 데이터를 뜻한다. 즉 데이타베이스, 처음의 정의하는 상수, 초기화값, 변수 등을 뜻), view(input 텍스트, 체크박스 항목 등과 같은 사용자 인터페이스 요소를 뜻 한다. 즉 데이터 및 객체의 입력, 그리고 보여주는 출력), Controller(데이터와 사용자인터페이스 요소들을 잇는 다리역할을 한다. 즉, 사용자가 데이터를 클릭하고, 수정하는 것에 대한 "이벤트"들을 처리하는 부분 )세가지 역할로 구분해  더 효율적이고 유지보수와 확장성, 유연성을 보장하는 프로젝트를 설계할 수 있었고 그 과정과 필요성에 대해 자세히 알 수 있게 되었다.


+개인 과제 githublink(나만의 백엔드 서버만들기_token 기반 사용자 인가)

https://github.com/ggiou/spring_backend_week4