본문 바로가기
반응형

프로그래밍77

ElastiCache(Redis) Redis Insight EC2를 활용하여 접근하기 ElastiCache란?쉽게 말해, "엄청 빠른 메모리 저장소" 라고 보면 됩니다.우리의 데이터가 마치 뇌 속 단기 기억처럼 순식간에 접근 가능하도록 해주는 역할을 하죠.ElastiCache에는 두 가지 대표적인 친구가 있어요:Redis: 강력한 기능 + 인메모리 데이터베이스Memcached: 단순한 캐싱 전용Redis의 보안 철칙 🔒Redis는 기본적으로 외부 접근이 불가능합니다.이거 마치 비밀기지 같은 느낌이죠.예를 들면, MySQL 같은 데이터베이스는 Public IP를 부여받아서 외부에서도 접근할 수 있는데,Redis는 그런 거 안 됩니다! ❌🙋‍♂️ "아니, 그러면 외부에서 Redis에 어떻게 접근하죠?"💡 답: SSH Tunneling을 쓰면 됩니다!SSH Tunneling이란? 🕵️‍.. 2025. 2. 26.
하나? 여러 개? 대량? 😵 DRF Serializer 활용법 총정리! DRF Serializers: 데이터 포맷의 마법사 🧙‍♂️Django REST Framework(DRF)의 시리얼라이저(Serializer)는 REST API에서 데이터를 주고받기 쉽게 변환해주는 만능 해결사입니다. "데이터가 뭐라고? 난 그냥 Python 객체를 보내고 싶을 뿐인데!"DRF: "걱정 마세요, JSON으로 바꿔 드릴게요!"😎  📌 DRF 시리얼라이저의 역할서로 다른 환경에서도 데이터를 원활히 통신할 수 있도록 변환합니다.복잡한 데이터를 JSON, XML 등 친숙한 포맷으로 변신시킵니다.Django에서 사용하는 파이썬 객체나 queryset을 REST API에서 사용할 수 있도록 변환합니다.보너스로 데이터 유효성 검사 같은 기능도 제공하죠! 🚀1.  왜 Serializers를 써야.. 2025. 2. 24.
Django ORM 최적화: GenericForeignKey를 활용한 데이터 모델링 문제 사항커뮤니티 관련 사이드 프로젝트를 진행하면서 모델링에서 발생한 문제를 정리해보려고 합니다.예를 들어, 댓글 기능을 글, 사진, 비디오 등 다양한 콘텐츠에 적용할 수 있는 서비스를 만든다고 가정해봅시다.이 경우, 댓글을 저장하는 테이블이 있고, 이를 각각의 콘텐츠(글, 사진, 비디오) 테이블과 개별적으로 연결해야 하는 문제가 발생합니다.즉, 매번 새로운 콘텐츠 모델을 추가할 때마다 댓글 테이블과 별도의 관계(ForeignKey)를 설정해야 하는 불편함이 생깁니다.이 문제를 해결할 방법을 고민하던 중, Django의 GenericRelation을 활용하면 유연한 설계가 가능하다는 것을 발견했습니다.이번 글에서는 GenericRelation을 적용하기 전 테스트했던 코드와 함께, 어떻게 더 효율적으로 .. 2025. 2. 19.
View가 깔끔해지는 Django 필터링 전략! get_queryset() vs filter_queryset() 문제 상황새로운 프로젝트를 진행하던 중, 회사의 레거시 프로젝트를 살펴볼 기회가 있었다.기존 방식대로 문제를 해결할 수도 있었지만, 개인적으로는 View에 모든 비즈니스 로직이 집중되면 가독성과 유지보수성이 떨어진다고 판단했다.따라서 Django의 filter를 활용하여 파라미터별로 필요한 조건을 동적으로 적용할 수 있도록 구현하는 것이 더 적절하다고 결정했다. 사실 위의 내용들은 각각 쿼리 파라미터의 값들에 맞춰서 적절하게 조건이 나눠지면 된다. 해결 방안from django_filters.rest_framework import filterset, filtersclass UserFilter(filterset.FilterSet): locations = filters.CharFilter(method=.. 2025. 2. 18.
Django 대량의 list 요청시 Cursor-based Pagination Django를 사용하다보면 기본적으로 사용하는 DRF Pagination을 사용해왔다. 그러나 대량의 데이터를 페이지네이션을 하게되면, 퍼포먼스 및 최적화 관점에서 좋지 않다.Pagination의 종류구현 방법오프셋 기반 페이지네이션(Offset-based Pagination)커서 기반 페이지네이션(Cursor-based Pagination)문제 상황기존의 오프셋 기반 페이지네이션과 커서 기반의 페이지네이션의 차이는 무엇이고 왜 대용량의 페이지를 처리할때는 오프셋 기반보다 커서 기반으로 처리하는것이 좋은걸까?기본적으로 많이 사용하는 Pagination은 Offset 기반의 Pagination이다.Offset을 MySQL에서라면 간단하게 LIMIT 쿼리에 콤마를 붙여 ‘건너 뛸’ row 숫자를 지정하면 된.. 2025. 2. 18.
[Spring] Entity를 설계할때 주의할점!! 어노테이션 뭘 써야하고 왜 쓰는거야??? 글에서 나온 코드는 Github에서 확인 할 수 있습니다. 최근에 Spring을 시작하고 Entity를 설계하면서 아래와 같이 어노테이션을 활용하여 설계를 하였는데,문득 궁금해지기도하고 올바른 설계가 맞는지에 의문이 들어서, 학습을 하던 도중 좋은 설계방향이 아니여서 글을 작성하게 되었다. 리팩토링 전 코드@AllArgsConstructor // 객체 내부의 인스턴스 멤버들을 모두 가지고 있는 생성자를 생성, 불필요한 멤버들까지 매번 생성@Builder // 모든 필드에 빌더 클래스 적용이 아니라 필수 필드만 빌더에서 설정하도록 하여 불변성을 보장@Entity@Table(name = "account")@NoArgsConstructor(access = AccessLevel.PROTECTED)// 무분별한 .. 2024. 11. 6.
반응형