Root292 [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. [CI/CD 구축] AWS EC2에 Docker를 활용한 Jenkins 파이프라인 구축 CI/CD를 구축하는 방법은 수백가지는 된다고 생각한다. 때문에 본인이 가지고있는 서버 환경이나 운영 되고있는 서비스에 따라 CI/CD 구축을 효율적으로 구축할 수 있어야 한다. 본 포스팅에서는 CI/CD에 대해, 그리고 Docker라는 것에 대해 막연하게 생각하고 있는 사람들에게 도움이 되고자 AWS EC2 인스턴스에 Docker를 활용하여 간단하게 CI/CD 구축하는 방법을 안내한다. 1. AWS EC2 인스턴스 생성 및 INOUND 포트 설정 AWS EC2 인스턴스는 요즘 클릭 몇번에 해결된다. 물론 생성 이후 보안규칙에서 INBOUND(EC2 인스턴스로 들어오는 데이터 혹은 요청에 대한 내용)에 대해 사전 지식이 필요하다. 나는 Ubuntu 22.04/t2.micro(프리티어)를 생성했다. EC.. Infrastructure/CICD 2024. 2. 7. [SQLD] SQL 기본 - 함수, 조인, 표준 조인 요약 1. 함수 (Function) 데이터베이스 관리에서 SQL 함수는 데이터를 조회, 변환, 계산하는 데 사용되는 강력한 도구중 하나이다. SQL 함수는 입력 값을 받아 처리하고, 결과를 반환하는 일련의 SQL 문을 포함한다. SQL 함수의 기본 SQL 함수는 크게 내장 함수(built-in function)와 사용자 정의 함수(user-defined function, UDF) 두 가지 유형으로 분류된다. 내장함수 데이터베이스 시스템에 사전에 정의된 함수로, 문자열 처리, 날짜 계산, 수학적 계산 등 다양한 기능을 제공한다. 사용자 정의 함수 (User-Defined-Function) 사용자가 특정 작업을 수행하기 위해 직접 작성한 함수로, 복잡한 로직이나 반복적인 작업을 처리하는 데 유용하다. 자주 사용하.. CapacityBuilding/SQLD 취득 2024. 2. 7. [SQLD] SQL 기본 - SELECT, WHERE, GROUP BY, HAVING, ORDER BY 요약 1. SELECT SELECT 문은 데이터베이스에서 특정 데이터를 조회할 때 사용되는 가장 기본적이고 중요한 명령어이다. 기본구조 SELECT column1, column2, ... FROM table_name; column1, column2, ...: 조회하고 싶은 컬럼들을 나열한다. table_name: 데이터를 조회할 테이블의 이름을 기입한다. SELECT 사용법 특정 컬럼 조회 학생 테이블의 이름과 성적 컬럼을 조회하는 방법 SELECT 이름, 성적 FROM 학생; 모든 컬럼 조회 테이블의 모든 컬럼을 조회할 때는 별표(*)를 사용한다. SELECT * FROM 학생; 중복 제거 (DISTINCT) DISTINCT 키워드를 사용하여 중복된 값 없이 특정 컬럼을 조회할 수 있다. SELECT DI.. CapacityBuilding/SQLD 취득 2024. 2. 6. 이전 1 2 3 4 5 6 7 ··· 25 다음