[회고일지] 항해99 5주차

어느덧 시작한지 5주차가 되었다. 매 주 금요일이면 한 주간에 커리큘럼을 마무리하고 새로운 조원들과 새로운 한 주 과정을 시작한다. 이번 주차는 주특기 숙련 주차를 지나 심화주차로 접어들게 되었다. 확실히 많은 내용을 빠른 시간안에 체화해가야하기에 다들 점점 힘들어하는 모습들이 보이고, 한계에 부딪히는 사람들도 많은 것 같다. 그러나 생각해보면 정말 빠른 시간안에 이렇게 과제를 수행하고 해내고 있는 동료들이 너무나 대견하면서도 존경스럽다. 정말 대단하다고 박수도 쳐주고 응원한다고 말하고 싶다. 나 또한 숙련주차를 거치면서 시작하는 2~3일동안은 정말 코드를 쳐다보기도 싫을정도로 거부감이 많이 들었던 것 같다. 그때 같이 만난 조원들과 대화를하면서 마음을 나누면서 잘 극복했다. 그러면서 정말 더욱 돈독해지고 서로에 대해서 더 깊게 알아가는 시간이 되었다. 특히 나의 경우는 인증/인가 부분에 대해서 너무 이해가 안되고 어려움이 컸다. 그래서 한 주간 정말 보고 또 보고 하면서 조급한 마음을 조금은 내려놓고 조원들과 저녁시간 공부한 내용을 나누고 설명도 해보면서 극복했다. 사실 어떠한 내용을 배우고 익히는 것도 중요한데 부트캠프를 하면서 정말 중요하고 반드시 얻어가야하는 것은 함께 고생하고 이겨낸 주변 동료들이라 생각한다. 그리고 최종 프로젝트를 할 때도 비록 실력을 떨어지더라도 이러한 동료들과 함께한다면 모두 극복할 수 있을 것 같다는 생각을 많이 했던 한 주였다.


금주 학습 키워드

1.) ORM

ORM은 Object(객체) Relational(DB 릴레이션) Mapping(매핑)의 약자이다.
객체 지향 프로그래밍은 클래스 객체를 이용하고 관계형 데이터베이스는 테이블을 이용하는데 객체 모델과 관계형 모델 간의 불일치가 존재한다. 그 중 하나로 객체에서는 서로 간에 참조를 통하여 관계를 맺는다면 DB 테이블의 경우는 키를 통하여 서로 연관관계를 맺는다. 그렇기에 데이터를 다루는 관점에서 불일치가 발생한다. 한 가지 예시로 OOP에서는 각각의 객체가 사용할 수 있는 필드가 존재하며, 객체간에는 참조를 통하여 관계를 형성한다. 그렇기에 단순 연관관계에 있어서 해당 객체를 참조하면 된다. 그러나 DB 릴레이션의 경우는 객체가 아닌 식별가능한 값을 참조키를 통하여 값을 참조하게 된다. 그렇기에 데이터를 서로 주고받는 시점에서 불일치가 발생하며, 별도의 작업을 필요로 한다. 또한 ORM 기술을 적용하지 않을 경우 DB를 조작하기 위한 별도의 SQL문을 개발자가 작성하여 DB와 통신을 해야했다. 이럴경우 한가지 예로 필드에 변경이 발생하면 해당 관련된 쿼리문도 모두 변경을 해주어야한다. 이러한 불편함을 해소하기 위하여  객체중심으로 다룰 수 있도록 통신하는 과정에서 이를 변경해주는 ORM 기술이 나오게 되었고, 개발자가 이제는 별도의 SQL문 작성 없이 단순 OOP 중심으로 개발에 집중할 수 있도록 편의가 제공되었다.

 

2.) SQL

SQL는 관계형 데이터베이스에 정보를 저장하고 처리하기 위한 프로그래밍 언어입니다. 관계형 데이터베이스는 정보를 테이블 형식으로 저장하며, 행과 열은 다양한 데이터 속성과 데이터 값 간의 다양한 관계를 나타냅니다. SQL 문을 사용하여 데이터베이스에서 정보를 저장, 업데이트, 제거, 검색 및 검색할 수 있습니다. 데이터베이스 성능을 유지 관리하고 최적화하는 데 SQL을 사용할 수도 있습니다.  - [AWS SQL 설명 참조]https://aws.amazon.com/ko/what-is/sql/

 

3.) MVC

소프트웨어 설계와 관련된 디자인 패턴의 일종으로 소프트웨어를 Model View Controller로 나누어 디자인하는 방식이다. MVC를 사용하기 이전에는 일종에 Model1 방식으로 java 진영에서는 앞단에 스크립트를 활용하며 뒷단에 프로그래밍 언어인 java를 숨겨서 동적처리를 할 수 있도록 jsp를 활용하여 개발을 진행하였다. 그렇기에 하나의 jsp파일에 필요한 기능들이 모두 코드화되어 있어서 하나의 파일이 굉장히 무거울 수 밖에 없었다. 한 가지 예로 비즈니스 로직 + DB 연결 및 처리와 같은 모든 코드가 하나의 jsp파일에 들어있으며, 이런식으로 jsp파일도 필요에 따라 추가적으로 작성하는 방식이었다. 이에비해 MVC 패턴은 각각의 역할을 구분하여 View에서는 화면에 그려지는 역할에만 충실하고 Controller에서는 요청을 구분하고 그에 따라 서비스 계층, 레포지토리 계층등으로 역할을 위임하면서 충실히 해당 맡은 역할에만 집중하도록 설계하며, 서버와 클라이언트 사이에 Model 객체를 통하여 필요한 데이터를 전송하는 방식을 취한다. 그렇기에 기존에는 유지보수를 위해서 하나의 파일안에 무수히 많은 부분들 중에 필요한 부분들 찾아서 수정할때 서로간에 강한 응집이 형성되어 어려움이 컸지만, MVC 패턴으로 개발할 경우 역할이 분배되어 있기에 필요한 부분을 쉽게 찾아서 유지보수할 수 있다는 큰 장점이 생겼고 어떠한 역할을 하는지 직감적으로 식별하기에도 용이해졌다.