Develop 28

Mendix가 뭐야?

인턴을 하게 된 회사에서 Mendix를 사용한 프로젝트를 진행하게 되어 본격적으로 프로젝트에 들어가기 전에 Mendix에 대해 공부를 해야할 필요가 생겼다.그래서 Mendix에 대해 정보를 찾아보기 시작했는데 사용하는 곳이 많지는 않은지 그다지 많은 정보가 나오지 않는다.때문에 여기저기서 조각모음한 정보들을 한곳에 정리하고 내 나름대로 Mendix를 정의해서 앞으로 Mendix를 활용해나가기 위한 방법에 대해서 글을 작성해볼 생각이다. 그래서 Mendix가 도대체 뭐야?멘딕스는 지멘스(Simens)라는 회사가 인수한 Low-code 개발 플랫폼이다.정의는 간단한데 멘딕스가 뭔지 정의하기 위해선 이 로우코드(Low-Code)라는 게 뭔지 알아볼 필요가 있을 것 같다. 로우 코드란?"코드를 거의 쓰지 않고도..

Develop/Mendix 2025.04.29

웹 크롤링에 대해 알아보자

파이썬으로 가장 먼저 도전해 보기 쉬운 프로젝트이자 한 번쯤은 해보고 싶었던 웹 크롤러를 만드는 프로젝트를 진행하기에 앞서 도대체 웹 크롤링이 뭐고 어떻게 작동하는지 왜 사용하는지 어떤 점을 고려해야 하는지 알아보고자 한다. 웹 크롤링이 뭐야?웹 크롤링(Web Crawling)은 자동화된 프로그램을 이용하여 월드 와이드 웹의 웹 페이지를 체계적으로 탐색하고 정보를 수집하는 과정을 의미한다.Crawling의 Crawl은 기어다니는 것을 의미하는데 크롤링 프로그램 즉 크롤러를 스파이더라고도 하는 것을 보면 거미가 거미줄을 기어 다니며 먹이를 수집하듯 웹을 크롤러가 기어 다니며 정보를 모으는 것에 빗대 Crawling이라고 표현하게 된 것 같다.크롤링의 주요 목적1. 웹 페이지의 콘텐츠 수집2. 웹 사이트의 ..

CMS 개발 계획

전 포스팅에서는 CMS가 뭔지에 대해 알아보았다.결과적으로 CMS란 콘텐츠를 관리할 수 있는 기능이 포함된 사이트라면 넓은 의미에서 CMS라 볼 수 있고, Java를 이용해서 콘텐츠를 관리할 수 있는 대시보드를 제공하는 회사 페이지를 만들어보려고 한다.1. 요구사항 정의1-1. 공통1-1-1. 기능적 요구사항항목설명로그인 기능아이디, 비밀번호 기반 로그인JWT 기반 인증Access/Refresh 토큰 발급 및 검증 (Spring Security)역할 기반 접근 제어 (RBAC)사용자 역할별 접근 권한 제한비밀번호 암호화Bcrypt 등 안전한 해시 알고리즘 사용감사 로그 기록관리자 및 일반 사용자 행동 로그 수집 (Kafka → ELK)관리자 IP 제한허용된 IP 대역에서만 관리자 페이지 접근 가능알림 시..

Develop/CMS 2025.04.15

그래서 CMS가 뭔데?

1900년대 말, 2000년 초 컴퓨터가 한창 보급되기 시작할 무렵 기업, 기관, 개인 할 것 없이 웹사이트 운영이 필요한 곳이 증가하고, 이에 따라 관리해야 할 텍스트, 이미지, 동영상 등의 디지털 콘텐츠가 급증함에 따라 이를 관리하는 것이 점점 복잡해져 비전문가들도 쉽고 간편하게 디지털 콘텐츠를 생성, 관리, 배포할 수 있는 시스템에 대한 필요는 CMS를 탄생시켰다. CMS(Contents Management System)란?CMS는 콘텐츠 관리 시스템(Contents Management System)이라는 굉장히 포괄적이고 두루뭉술한 표현의 약자로, 현재 굉장히 많은 종류의 CMS가 존재하고, 가장 대표적으로 WordPress를 꼽긴 하지만, 정작 정확하게 무엇을 의미하는지는 제대로 설명하지 못하는..

Develop/CMS 2025.04.15

[MSA] MSA 전환 프로젝트 - 9. 분산 트랜잭션 (2) with Kafka

1.Kafka란?Kafka는 '대규모 실시간 데이터 스트리밍'을 처리하는 데 사용되는 '분산 이벤트 스트리밍 플랫폼'이다.이렇게 단어들을 나열해 놓으면 이해하기 힘들 수 있으니 하나하나 짚어보자우선 '대규모 실시간 데이터 스트리밍'이란 실시간으로 발생하는 큰 양의 데이터를 지속적이고 빠르게 처리하는 것을 의미한다.예를 들면,SNS에서의 실시간 사용자 활동 기록온라인 쇼핑몰의 주문 결제 이벤트IoT 센서에서 발생하는 대량의 데이터 수집과 같은 순차적으로 끊이없이 생성되는 데이터를 최소한의 지연만으로 대규모의 데이터를 실시간으로 처리하고 여러 시스템으로 데이터를 효율적으로 전달하는데 특화되었다는 뜻이다.그리고 '분산 이벤트 스트리밍 플랫폼'에서'분산 이벤트'는 여러 시스템(서버, 애플리케이션 등)이 참여하여..

[MSA] MSA 전환 프로젝트 - 8. 분산 트랜잭션 (1) with SAGA 패턴

0. 들어가기 전기존의 모놀리식 구조에서는 각 도메인뿐만 아니라 도메인을 영속화하는 DB까지 하나의 애플리케이션에 존재했다.따라서, 두 개 이상의 서비스를 거쳐야하는 프로세스에서도 DBMS가 기본적으로 제공하는 트랜잭션 기능을 통해 한 번에 트랜잭션으로 묶어 원자성과 일관성을 유지할 수 있었다.하지만, MSA 환경에서는 각 서비스가 별도의 애플리케이션으로 동작하며, 각 서비스는 자체 DB를 가지는 경우가 많다.이로 인해 A 서비스의 DB에서 발생한 변경 사항을 B 서비스의 DB에 반영하려고 할 때는 두 서비스 간 통신 방식과 트랜잭션 처리가 중요한 과제가 된다.이전에 우리는 OpenFeign을 활용해 서비스 간 통신을 구현해 본 적이 있다.하지만 OpenFeign은 HTTP 기반 통신을 단순화하는 동기식..

[MSA] MSA 전환 프로젝트 - 7. 서비스 장애 처리(Circuit Breaker) with Resilience4J

1. 서비스 장애 처리는 왜 필요한가?이전 포스트에서 MSA의 마이크로 서비스 간 통신에 대해 알아보았는데 이렇게 현재 외부에서 필요한 데이터를 요청하는 구조를 가진 MSA에서 만약 데이터를 요청해야 하는 해당 서버에 장애가 생긴다면 어떤 일이 일어날까?이전 포스트의 예시처럼 user-service와 order-service 간 통신을 예로 들어 설명해보겠다.클라이언트 측에서 user의 정보 API 요청API Gateway에서 user-service로 요청 라우팅user-service에서 userDto에 포함되어야 하는 orderList를 받아오기 위해 order-service로 OpenFeign을 이용해 요청order-service의 orders DB에서 해당 user의 userID와 일치하는 orde..

[MSA] MSA 전환 프로젝트 - 6. 마이크로 서비스 간 통신 with Spring Cloud OpenFeign

프로젝트를 도메인 별로 각각의 마이크로 서비스로 만들어 Service Registry에 등록도 해보았고 등록된 서비스를 Api Gateway를 통해 하나의 진입점을 통해서 접속할 수 있도록 만들어 놓기도 했다.각각의 서비스는 분리해 놓으니 오히려 필요한 부분만 갖게 되어 혼자서는 이전보다 더 잘 동작하는 상황이 되었지만하나의 애플리케이션이 아닌 서비스 별로 각각 기동되는 애플리케이션끼리 필요한 데이터를 어떻게 주고받아야 하는가 하는 문제에 도달하게 되었다.1. 서비스 간 통신 방식의 종류서비스 간 통신을 하기 전에, 어떤 통신 방식이 있고 그 중 어떤 것을 활용해 볼지에 대해서 먼저 알아보자.서비스 간 통신의 종류는 크게 동기 방식과 비동기 방식으로 나뉘게 된다.동기 방식RestTemplateOpenFe..

[MSA] MSA 전환 프로젝트 - 5. Spring Cloud Bus

이전 포스트에서 Spring Cloud Config를 설정해 봤다.그럼 이제 Spring Cloud config 설정도 끝났겠다 외부의 설정파일을 마음대로 수정하면 처음에 말했던 대로 기동중인 애플리케이션의 설정 정보들이 실시간으로 바뀌게 될까?애석하게도 그렇지가 않다.바뀐 설정 정보가 적용되기 위해서는서비스 재기동Actuator RefreshSpring Cloud Bus이렇게 세 가지 방법이 필요한데 이 중에 서비스를 재기동 하는 방법은 애플리케이션을 끄고 설정을 변경하는 것과 다르지 않기 때문에 아래 두 가지 방법을 사용해야 한다.두가지 방법 모두 실습을 해볼 예정이기 때문에 우선은 Actuator Refresh를 활용하는 방법에 대해 먼저 알아보겠다.1. Actuator Refresh1-1. Dep..

[MSA] MSA 전환 프로젝트 - 4. Spring Cloud Config

1. 설정 파일 관리의 필요성현재 마이크로 서비스들의 설정 파일들은 각각의 애플리케이션 내부에 존재한다.이렇게 설정 파일들이 각 마이크로 서비스 내부에 존재하는 경우 생산성, 운영적 측면에서 문제가 발생하게 되는데예를 들어1. 성능 테스트를 위해 설정 파일에서 어떤 설정의 수치를 조절해가며 테스트해야 하는 상황이런 상황에서 애플리케이션 내부에 설정파일들이 존재한다면 어떤 일이 일어날까?수치를 한 번 조정하고 테스트할 때마다 애플리케이션을 새로 빌드하고 배포해야하는 과정이 필요하게 된다.단지 설정 값을 조정하는 작업 하나 때문에 애플리케이션을 다시 빌드하고 배포해야 하는 것이다.2. 여러 설정 파일에 공통으로 있는 어떤 설정 값을 변경해야 하는 상황이런 상황은 또 어떨까?예를 들어 인증을 위한 시크릿키를 ..