스프링(4)
-
[우테코 7기 프리코스 3주 차] MVC
프리코스 3주 차, 잘못된 입력에 예외가 발생하면 다시 올바른 입력을 요청해야 한다는 요구 사항이 나를 막아세웠다. 무엇이 잘못된 입력인가?이 경우 예외는 어떤 타입으로 던질 것인가?잘못된 입력을 검증하는 책임은 어디에 있는가?입력을 다시 요청하는 로직은 어디에 배치해야 하는가?한 문제를 넘으면 또 다른 난관이 기다리고 있었다. 지금은 문제를 파악하고 해결했기에 넓은 시각으로 볼 수 있지만, 그 당시에는 올바르게 처리하고 있는지 끊임없이 확인하며 버거움을 느꼈다. 완벽함을 추구하는 욕심을 내려놓았다면 빠르게 구현할 수 있었겠지만, 포기할 리 있나. MVC 소프트웨어 설계의 복잡성을 관리하는 방법 중 하나가 바로 MVC(Model-View-Controller) 패턴이다. 애플리케이션의 구조를 세 가지 ..
2024.11.06 -
[우테코 7기 프리코스 2주 차] 일급 컬렉션
1주 차, 많은 코드를 리뷰하며 일급 컬렉션(First Class Collection)이라는 새로운 개념을 배우게 되었다. 이는 소트웍스 앤솔로지의 객체지향 생활체조 규칙 8번에서 언급되는 내용으로,컬렉션을 객체로 캡슐화해 책임을 분리하고 불변성을 유지하는 설계 방식을 의미한다. 새롭게 알게 된 개념을 적용해가며 느낀 점과 배운 내용을 기록해보고자 한다. 개념일급 컬렉션 단일 Collection만을 멤버변수로 갖고, 이를 Wrapping하여 사용하는 클래스 비즈니스 종속적인 자료구조:비즈니스 로직에 맞춘 컬렉션 구조를 설계할 수 있습니다.상태와 행위의 일원화:데이터를 담고 처리하는 행위(method)를 한 클래스 내에서 통합 관리할 수 있습니다.테스트 용이성:컬렉션에 대한 로직이 한 곳에 집중되므로,..
2024.10.29 -
ValanSe 아키텍쳐
오늘, 졸업 논문을 위한 창의설계프로젝트를 마무리했다. 이번 프로젝트에서는 밸런스 게임이라는 도메인에 집중하기보다 여러 기술들을 사용(체험)해보고, 서버를 배포부터 구성하는 것에 초점을 맞췄다. 이벤트 브로커 서버가 담긴 컨테이너는 직접 SSH에서 배포했다.API 서버와 추천 시스템 서버는 따라 깃허브 액션을 통해 도커 이미지로 만들어지고, 도커 허브에 push 된다. 이후, EC2 SSH에 접근, 도커 허브에서 갱신된 이미지를 pull 한다. 이는 도커 컴포즈를 활용해서 실행했다. 아래는 깃허브 액션을 위한 파일이다.생각보다 깃허브 액션을 위한 환경변수 설정이 번거로웠다. 나중에는 요령이 생기긴 했지만.name: CI/CD using GitHub Actions & Dockeron: push: ..
2024.06.24 -
서버에서 클라이언트의 쿠키를 설정할 수 없었기에.
이번 프로젝트는 스프링 시큐리티 컨텍스트에서 스프링 oauth2-client를 통해서 로그인을 구현했다. 이전에는 oauth 과정을 직접 구현했던만큼, 이번 기회에 스프링에서 지원하는 라이브러리를 사용해서 oauth를 구현하고 싶었다. 즉, 서버에서 모든 oauth 과정이 이뤄지게 됐다. 서버에서 진행되는 oauth 인증을 시작하는 링크를 버튼으로 구현하여, 로그인은 성공적으로 이뤄질 수 있었다.하지만, 이 상황에서 서버는 어떤 방법으로도 클라이언트의 쿠키값을 세팅할 수 없었다. 서버가 쿠키값을 세팅해야했던 이유는 oauth 인증 이후, 앞으로의 인가를 위한 jwt 의 엑세스 토큰을 저장하기 위함이다. 이를 해결하기 위한 노력(삽질)은 아래와 같다. crossOrigin annotation spr..
2024.05.12