전체 글289 Redis를 활용한 조회수 시스템 최적화와 동시성 이슈 해결 서론게시글을 제공하는 모든 서비스에서는 게시글의 조회수를 다양한 방법으로 제공하고 있습니다. 저희 회사에서도 게시글의 조회수를 집계하기 위해 여러 방식을 사용해 왔습니다. 기존에는 게시글 상세 조회 시마다 접속 정보(게시글, 접속 장치, 접속 시간)를 RDB에 로그 형태로 단순 삽입하고, 일정 시간마다 배치 작업을 통해 실제 조회수 RDB를 업데이트하는 방식이었습니다.하지만 이 방식은 시간이 지남에 따라 심각한 문제점을 드러냈습니다. 게시글의 수가 하루에도 몇십에서 몇백 개씩 증가하면서, 상세 조회마다 RDB에 Insert되는 횟수가 기하급수적으로 늘어났습니다. 이는 데이터베이스에 부하를 주고 성능 저하를 유발했습니다.이를 해결하기 위해 조회수 데이터를 Redis에 저장하고, 배치 작업을 통해 RDB를 .. Framework/Spring Boot 2024. 10. 18. SQLD 취득 후기 서론SQLD 시험 범위와 출제 형태가 처음 바뀐 시험에 뛰어들었습니다. 좀 더 실무에서 사용할 수 있는 내용들이 출제된다고 생각되었고, 정보처리기사 데이터베이스 과목을 공부하면서 함께 취득하면 좋을 것 같았습니다. 너무 늦었지만 SQLD 취득 후기겸 포스팅 작성합니다.본론현업자로서 이론파트 부분과 새로 출제되는 윈도우 함수 부분, 그리고 SQL 활용 부분을 중점적으로 공부하였고 앞서 생각한데로 정보처리기사 공부와 겹치는 내용이 많았기 때문에 학습에 있어서 어려움은 없었습니다. 공부 기간은 사람마다 다르겠지만 현업에서 개발을 하고 계시는 분들이라면 이론적인 부분과 실무에서 잘 사용하지 않았던 SQL 활용 파트 부분을 공부하는데 중점을 맞춰서 2주정도 공부하면 무난하게 합격하실 것 같습니다. 비전공자 분들께.. CapacityBuilding/SQLD 취득 2024. 10. 10. Spring Boot에서 발생하는 직렬화 오류 해결 가이드 서론Spring Boot 애플리케이션 개발 중 Redis나 RabbitMQ와 같은 메시지 브로커를 사용하다 보면 예기치 않은 직렬화 오류를 마주할 수 있습니다. 특히 데이터 직렬화 및 역직렬화 과정에서 발생하는 문제는 시스템의 안정성을 해칠 수 있습니다. 이번 포스팅에서는 이러한 오류의 발생 원인과 해결 방법, 그리고 이를 이해하기 위한 이론적인 배경까지 자세히 살펴보겠습니다.1. 문제 상황Spring Boot로 개발된 문자 발송 서비스에서 다음과 같은 직렬화 오류가 발생했습니다.Could not read JSON: Unrecognized token 'TokenResDto': was expecting (JSON String, Number, Array, Object or token 'null', 'true.. Framework/Spring Boot 2024. 10. 8. RabbitMQ 활용하기 서론최근 RabbitMQ를 활용하여 이메일, SMS, 카카오톡 푸시 알림 등을 처리하는 Notification Application에 대해 개발하게 되었습니다. 때문에 본 포스팅에서는 RabbitMQ를 활용하여 Nofification Apllication에서 주로 사용하는 기능들에 대해 알아보는 시간을 갖도록 하겠습니다. 특히 Spring Boot와의 연동을 통해 실무에서 많이 사용되는 큐 전략과 예제 코드를 상세히 다루어, 처음 접하시는 분들도 쉽게 이해할 수 있도록 하겠습니다.1. RabbitMQ란?RabbitMQ는 오픈 소스 메시지 브로커 소프트웨어로, 다양한 프로토콜을 지원하며 메시지의 송신자와 수신자 사이에서 큐잉을 담당합니다. 시스템 간의 비동기 통신을 가능하게 하여, 애플리케이션의 확장성과 .. Framework/Spring Boot 2024. 9. 30. 정보처리기사 독학으로 필기 실기 합격한 후기 서론정보처리기사 자격증을 준비하시는, 혹은 취득을 위해 공부를 진행중인 모든 분들에게 팩트 한 말씀 드리겠습니다. 독학으로 정보처리기사 필기 혹은, 실기 합격 후기를 찾아 볼 시간에 책 한장이라도 더 보고, 요약본 한 번 더 보면 무조건 합격합니다. 다만 이런 뻔한 내용을 위해 구글링을 하신것이 아니라는 것을 알기에, 제가 공부했던 방법을 소개하며 합격한 후기를 짧게나마 포스팅 합니다. 1. 공부 방법1.1 정보처리기사 필기 독학 방법필기 합격만 노리고 계신 분들은 이론책 사지 마시고, 구글링을 통해 (혹은 요약본 구매 사이트를 통해서) 정보처리기사 요약본 PDF를 구매하여 3회독 하신 후, CBT 기출문제를 계속 반복하여 풀이하시면 됩니다. 하루 출퇴근 2시간 기준으로 잡고 cbt 문제풀이만 계속 진행.. CapacityBuilding/기사 취득 2024. 9. 25. [Legacy to Modernization] 3. Language Context Switching에 따른 작업 효율성 고려하기 서론최근, CodeIgnitor 1.0 beta & 언더바 템플릿 2개의 고대 유물적인 Framework를 섞어서 하나로 만들어 놓은 요상한 FrameWork 기반의 Legacy PHP Web Application을 Next.Js(Front)와 SpringBoot(Back)으로 분리하며 Converting 작업을 진행하고 있습니다. 컨버팅 작업 자체는 큰 리소스를 요구하지 않지만, 유지보수도 함께 진행해야 한다는 점에서 문제가 발생합니다. 코드 컨벤션이 전혀 지켜지지 않은 과거의 스파게티 코드와 에일리언 코드를 분석하고, 이를 Java Spring 진영에서 재구현하는 과정에서 유지보수 작업이 들어오면 다시 PHP로 돌아가야 하는 반복적인 행위가 이어집니다. 이러한 언어 컨텍스트 스위칭은 작업 효율성과 업.. Server Language/PHP 2024. 9. 25. ACL과 SG(ACG)에 대하여 서론현대의 클라우드 환경에서는 보안이 최우선 과제로 떠오르고 있습니다. 특히 네트워크 레벨에서의 접근 제어는 시스템의 안정성과 신뢰성을 유지하는 데 필수적입니다. 이번 포스팅에서는 Network ACL과 SG(Securiy Group) - ACG(Access Control Group)에 대해 알아보고, 두 개념의 차이점과 활용 방법을 이해하기 쉽게 설명해보겠습니다.1. Network ACL이란?Network ACL(Network Access Control List)은 서브넷 수준에서 적용되는 보안 레이어로, 네트워크 트래픽의 인바운드(Inbound)와 아웃바운드(Outbound)를 제어합니다. 각 규칙은 특정한 포트, 프로토콜, 소스 또는 대상 IP 주소에 대한 허용(Allow) 또는 거부(Deny)를 .. Infrastructure/Network 2024. 9. 25. 스프링에서 TransactionManager에 대한 상세한 이해하기 서론트랜잭션은 데이터베이스 작업에서 일관성과 무결성을 보장하기 위해 필수적인 개념입니다. 스프링 프레임워크에서는 이러한 트랜잭션 관리를 쉽게 할 수 있도록 TransactionManager라는 추상화된 개념을 제공합니다. 이 글에서는 TransactionManager가 무엇인지, 어떻게 동작하는지, 그리고 어떻게 설정하고 사용하는지에 대해 기초부터 상세하게 알아보겠습니다.본론1. 트랜잭션(Transaction)이란?트랜잭션은 데이터베이스에서 **원자적(Atomic)**으로 수행되어야 하는 일련의 작업을 의미합니다. 즉, 여러 작업이 하나의 단위로 처리되어야 하며, 모두 성공하거나 모두 실패해야 합니다. 이는 데이터의 무결성을 유지하는 데 중요합니다.1.1 트랜잭션의 4가지 특성(ACID)Atomicity.. Framework/Spring Boot 2024. 9. 24. Spring Boot에서 @Transactional 어노테이션이 작동하지 않을 때 해결 방법 서론트랜잭션이 필요한 서비스 메소드에 아무리 @Transactional 어노테이션을 적용해도 트랜잭션이 발생하지 않는 상황에 처할 수 있습니다. 이런 경우, 문제의 원인을 파악하고 해결하기 위해 여러 가지 요소를 점검해야 합니다. @Transactional은 Spring 프레임워크에서 트랜잭션 관리를 위해 매우 중요한 어노테이션이지만, 설정이나 코드 구조에 따라 예상과 다르게 동작할 수 있습니다. 이 글에서는 @Transactional이 작동하지 않는 일반적인 원인과 그 해결 방법을 구체적인 예시와 함께 자세히 살펴보겠습니다.1. 메소드 접근 제어자 확인하기@Transactional이 적용된 메소드는 public 접근 제어자를 가져야 합니다. Spring의 AOP는 기본적으로 프록시 기반으로 동작하며, .. Framework/Spring Boot 2024. 9. 24. [Legacy to Modernization] 2. 형식없는 Appliction API를 표준화된 RestAPI로 교체하기. 서론현대 소프트웨어 개발 환경에서는 API(Application Programming Interface)가 중요한 역할을 합니다. API는 다양한 소프트웨어 시스템 간의 상호 작용을 가능하게 하며, 특히 REST API(Representational State Transfer API)와 JSON API는 유연성과 확장성이 뛰어나 많은 시스템에서 채택되고 있습니다. 그러나 많은 기존 시스템에서는 여전히 오래된 형태의 API를 사용하고 있으며, 이를 REST API 및 JSON API로 전환하는 것이 필요합니다. 본 논문에서는 기존 시스템의 API가 REST API가 아닌 일반 Application API임을 분석하고, 이를 REST API 및 JSON API로 전환하는 과정과 장단점을 설명합니다.본론1. .. Server Language/PHP 2024. 7. 21. [Legacy to Modernization] 1. PHP Legacy Project에 ORM 도입하기 서론레거시 프로젝트는 종종 오래된 코드베이스와 기술 부채를 포함하고 있어 유지보수와 확장에 어려움을 겪는 경우가 많습니다. 특히, 데이터베이스와의 상호작용을 위해 PDO를 이용한 SQL 쿼리문 작성 방식은 다양한 단점을 가지고 있습니다. 이러한 문제점을 해결하고, 개발 생산성과 코드 품질을 향상시키기 위해 ORM(Object-Relational Mapping) 도입이 필수적입니다. 본 보고서에서는 PDO 기반 SQL 쿼리문 작성의 단점을 분석하고, ORM 도입의 필요성과 그 이점을 체계적으로 설명하겠습니다.PDO 기반 SQL 쿼리문 작성의 단점1. 코드의 가독성 및 유지보수성 저하PDO를 이용한 SQL 쿼리문 작성은 SQL 문법이 직접 코드에 포함되기 때문에, 코드의 가독성이 떨어집니다. 복잡한 쿼리일수.. Server Language/PHP 2024. 7. 17. SwiftUI - MVVM 패턴을 사용해 만들어보는 알림 페이지 MVVM이란? MVVM (Model-View-ViewModel) 패턴은 소프트웨어 개발에 있어서 사용자 인터페이스를 구현하기 위한 아키텍처 패턴 중 하나다. 이 패턴은 주로 UI 애플리케이션에서 사용되며, MVC (Model-View-Controller) 패턴을 발전시킨 형태로 볼 수 있다. MVVM은 아래 세 부분으로 구성된다. Model 애플리케이션의 데이터와 비즈니스 로직을 담당. 데이터베이스, 유효성 검사, 객체 등이 여기에 해당된다. View 사용자에게 보여지는 UI 부분으로 사용자의 입력을 받고, 표현하는 역할을 한다. ViewModel View를 표현하기 위한 데이터와 명령을 가지고 있으며, Model과 View 사이의 중재자 역할을 한다. View에 바인딩하여 데이터의 변화를 자동으로 .. Framework/SwiftUI 2024. 3. 14. [Kafka 서버 구축] Kafka Clustering, Kafka Partitioning 구현 새로운 기술을 접할 때, 생소한 단어 때문에 학습하기 전부터 두려움을 느끼는 것은 개발자라면 한번쯤 가졌을 것이다. 나또한 지금 카프카 학습을 하면서 매우 당황스러울때가 많다. 때문에 Kafka Clustering과 Kafka Partitioning을 구현하기 전에, 각각의 용어에 대해 이해할겸 설명하는 과정부터 시작해보자. 1. 클러스터, 브로커, 토픽, 파티션 Apache Kafka의 주요 구성 요소인 주피터 클러스터(Zookeeper Cluster), 클러스터(Kkafka Cluster), 브로커(Broker), 토픽(Topic), 파티션(Partition)에 대해 아래와 같이 간략하게 정리해보았다. 주피터 클러스터 (Zookeeper Cluster) 역할 Kafka 클러스터의 메타데이터 관리, 브.. Infrastructure/Kafka 2024. 2. 15. [Kafka 서버 구축] AWS EC2 인스턴스에 Docker를 사용하여 Kafka와 Zookeeper를 연동해서 Kafka 서버 구축하기 Kafka의 활용방법은 정말 무궁무진하다. 특히 실시간 데이터 처리를 요구하는 모든 상황에서 Kafka는 빛을 발한다. 앞으로 카프카의 사용법을 공부하고, 관련 프로그램을 만들어보기 위해 AWS EC2 프리티어에 Kafka 및 Zookeeper를 설치 및 연동하여 Kafka 서버를 만들어보고자 한다. 카프카의 정의 및 구조에 대한 간략한 설명은 예전에 작성해 놓은 아래 게시물을 참고하길 바란다. Apache Kafka란? - 아파치 카프카에 대한 학습 대학생 시절에는 프로그래밍 언어를 위주로 공부하였고, 개발자가 되어 4년차가 된 지금, 프로그래밍 언어의 장벽은 낮아졌고 오히려 프로그래밍 아키텍쳐, 디자인 패턴, 파이프라인 구축 등 min-nine.tistory.com 1. AWS EC2 인스턴스 설.. Infrastructure/Kafka 2024. 2. 14. 이전 1 2 3 4 5 6 ··· 21 다음