본문 바로가기

반응형

전체 글

(66)
[UMC | DEMO DAY] 백앤드 리더의 1등상 후기 프로젝트 소개 - Github: https://github.com/spon-us spon-us spon-us has 2 repositories available. Follow their code on GitHub. github.com 들어가면서 24년 2월 20일, UMC 데모데이를 끝으로 UMC 5기 Spring파트를 수료했습니다! 수료와 함께 첫째날 데모데이 1등상이라는 좋은 결과를 얻어 더욱 뜻깊었던 경험이 된 것 같습니다. UMC는 학기간 자신의 파트 수업을 들으며 자신의 실력을 키웁니다. 그 후에 방학이 시작되면, 방학 기간 동안 여러 파트의 사람들과 팀 매칭을 통해 하나의 프로젝트를 진행합니다. 저는 이전 아이디어톤때 PM님의 성실함과 적극성에 매료되어 같은 PM님께 지원했고, 다행히 제가 원..
[Hackathon | BeautifulHalboo] 5th Ne(o)rdinary 해커톤 리뷰 서비스 - 아름다운 할부 Github: https://github.com/5th-Ne-o-rdinary-HACKATHON-team-I (리팩토링 이후 공개 예정) 리뷰에 들어가기 앞서.. 해커톤이 마무리된지 2주가 넘어가고 있습니다. 이번 해커톤을 통해 많은 점을 느낄 수 있었습니다. 제 부족한 점을 발견할 수 있었고, 배워가는 점도 정말 많았습니다. 이때 느낀 점을 짧게 개인 메모장에 작성해두었는데, 이번 포스팅에서 글로 풀어가며 다시 한 번 정리하고자 합니다. 너디너리 해커톤은 CMC 부원들은 필수 참여, UMC 부원들은 신청을 받아 참여하였습니다. 그 외에도 여러 신청 방법을 통해 참여하는 분들도 많았습니다. 저희 팀은 CMC 개발자, UMC 개발자 (본인), 개인 참여한 개발자 3명이서 서버 파트..
[Test] 단위 테스트 구조 모든 단위 테스트는 AAA패턴을 따라야 한다. AAA패턴이란 준비(Arrange), 실행(Act), 검증(Assert)을 의미합니다. 만약 비개발자들을 고려한다면 각각을 given, when, then으로 구분할 수도 있습니다. 실행 구절이 한 줄 이상이면 SUT의 API에 문제가 있다. SUT(System Under Test)의 이름을 sut로 지정해 테스트에서 구별하는게 좋습니다. 구절 사이에 빈 줄을 추가하거나 준비, 실행, 검증 구절 주석을 각각 앞에 둬서 구분하는게 좋습니다. 만약 실행 구절이 한 줄 이상이라면, 클라이언트가 항상 이 작업을 같이 수행해야 한다는 의미로, 이로 인해 잠재적 모순에 이어질 수 있습니다. 일반적으로 준비 구절이 세 구절 중가장 큽니다. 같은 테스트 클래스 내 비공개 ..
[Test] 런던파 vs 고전파 들어가면서 단일 테스트의 필요성은 많이 알려져있습니다. 테스트 코드를 작성할 때, 개발자가 고민해야 할 점들을 정리해두고자 합니다. 단위 테스트란? 단위 테스트란: 작은 코드 조각(단위)을 검증하고, 빠르게 수행하고, 격리된 방식으로 처리하는 자동화된 테스트입니다. 여기서 "격리된 방식"에 대하여 두가지 관점이 존재합니다. 책 "테스트 주도 개발"을 지은 켄트 백의 입장을 표명하는 고전파의 관점과, 런던의 개발 커뮤니티에서 시작된 런던파의 관점이 있습니다. 이때 런던파를 칭하는 표현으로 목 추종자(좋은 의미로 쓰이진 않는 듯 합니다. 하지만 런던파가 어떤 방식을 선호하는지 확 와닿습니다)가 있습니다. 격리된 방식에 대한 두 분파의 관점 각 분파의 차이에 대한 요약표를 살펴보도록 하겠습니다. 격리 주체 단..
[Project: OurWorldcup] 테스트 및 리팩토링 시작 들어가면서 개발을 시작한 사람들은 영상이나 포스팅에서 "테스트가 중요하다", "TDD로 개발해야 한다"라는 말을 많이 들었을 겁니다. 저도 많이 들었기 때문에, 처음 개발을 시작할 때 각 기능에 대한 테스트를 작성하고자 했죠. 하지만 어떤 기능을 테스트해야 하고, 어느정도까지 테스트 해야 하는지, 어떤 식으로 테스트 해야 하는 지 등에 대한 경계가 명확히 서 있지 않았습니다. 그렇기 때문에 release v1.0까지는 우선 기능 구현에 초점을 맞춰 개발을 진행했습니다. release v1.0을 출시한 후, 리팩토링과 테스트 코드 작성을 하기로 마음 먹었습니다. 리팩토링 & 테스트 리팩토링과 테스트를 위해 유명한 도서들을 읽으며 사전조사를 했습니다. Object도서를 읽으며 객체 지향 프로그래밍 패러다임에..
[Spring] Entity Class와 OOP 들어가면서 JAVA는 객체 지향 프로그래밍 패러다임을 사용하고 있는 언어입니다. 객체 지향 프로그래밍, 즉 OOP는 객체는 모두 자율적인 객체여야 하며, 이때 자율적인 객체라는 의미는 객체가 자신의 상태를 직접 관리하고 스스로의 결정에 따라 행동하는 객체임을 의미합니다. 그런데, Spring을 이용하여 개발할 때, Entity 클래스는 Database의 Table과 1:1 매칭되는 객체를 의미합니다. 그리고 상태(필드)만 가질 뿐, 해당 엔티티에 대한 책임(매서드)는 온전히 가지고 있지 못한 상태로 보입니다. 그래서 어떻게 해야 OOP 관점에서 Entity 클래스를 정의하는게 좋을 지 정리하고자 합니다. OOP 단어 정의 OOP에서 자주 등장하는 단어 협력, 책임, 역할을 간단하게 설명하면 다음과 같습니..
[Develop] Redis 캐시로 사용하기 본 포스팅은 아래 유튜브 영상을 정리한 내용입니다. https://www.youtube.com/watch?v=92NizoBL4uA&t 정리 - 캐시란? 데이터의 원래 소스보다 더 빠르고 효율적으로 액세스할 수 있는 임시 데이터 저장소 언제 사용하는게 좋을까?: 같은 데이터에 반복적으로 액세스할 때 (데이터의 재사용 횟수가 한 번 이상일 때) 변하지 않는 데이터 레디스는 캐시로 사용하기 좋은 솔루션입니다. 레디스 특징: 단순한 key-value 구조 In-memory 데이터 저장소(RAM) -> 빠른 성능(초당 작업속도 < 1ms, 초당 수백만 건의 작업 가능) - 캐싱 전략 레디스를 캐시로 사용할 때, 배치 전략: 캐싱 전략 데이터 유형, 데이터 액세스 패턴을 고려하여 선택해야 함 읽기 전략: Look-..
[Spring Security] Authentication 예외 처리 도입 Spring Security는 Filter를 사용해서 사용자가 인증받았는지 확인합니다. 만약 인증 과정 중에 예외가 발생한다면 어떻게 처리해야 할까요? 본 포스팅에선 Spring Security에서 인증 / 인가 과정에서 예외가 발생했을 때 처리 방법에 대해서 정리하고자 합니다. ExceptionTranslationFilter Spring Security는 기본적으로 필터를 통해 인증 과정을 구현합니다. 다양한 필터들 중 ExceptionTranslationFilter가 예외 처리를 담당해주는 필터입니다. 그 안에 AuthenticationEntryPoint 객체를 필드로 가지는데, 이 객체에서 예외 발생 시 어떻게 처리해줄지를 담당하는 객체입니다. class JwtExceptionIntercept..

반응형