전체 글 37

[Architecture] DataResource

1. 개요안드로이드 개발에서 데이터 상태를 일관성 있게 관리하는 방법은 애플리케이션의 안정성과 유지보수성을 높이는 데 중요한 역할을 한다. 이 글에서는 Flow와 DataResource를 활용하여 상태를 관리하는 방법에 대해 알아보도록 하겠다. 2. Datresource란?DataResource는 데이터 상태를 나타내는 추상적 개념으로 Success, Loading, Error 세 가지 상태를 포함한다. 이러한 상태를 한 곳에서 집중적으로 관리하면 상태 변화가 한 곳에서 관리되므로 코드의 가독성과 유지보수성이 향상되고 레이어 간 상태 관리가 단순화된다. 또한 상태 변화가 명확하므로 테스트 작성이 용이하며 데이터 처리와 UI 상태 관리가 명확히 분리된다. 3. Flow를 활용하기 Flow는 비동기 데이터 ..

개발/아키텍처 2025.09.11

[Architecture] 클린 아키텍처와 앱 아키텍처(Google)

전부터 작성하려고 했는데 이제서야 작성하는 아키텍처 글....이번 글에서는 우선 전체적인 틀에 대해서 작성하려고 한다 1. 클린 아키텍처란? 필요성? 위의 그림을 굉장히 많이 보았을 텐데, 먼저 아키텍처에 대해서 이야기를 해보자면코드를 작성할때, 구조에 대해서 크게 신경쓰지 않아도 동작하는 프로그램을 만들 수 있지만 그렇게 한다면 점차 코드 개발이 힘들어지거나또는 유지보수하기 힘들어진다. 그렇게 되는 가장 큰 이유중 하나가 코드 서로가 서로에게 큰 영향을 주기 때문인데,예를 들어서 A코드를 동작하는데 B코드가 사용되고 필요하다면 B코드를 수정하면 자연스럽게 A코드의 수정이 필요한 경우가 많다.이는 어쩔 수 없는 현상이지만 A코드를 동작할때, B,C,D..... 코드가 모두 사용된다고 하면, 굉장히 복잡하..

개발/아키텍처 2025.08.12

[Architecture] 데이터 모델과 아키텍처

우리가 개발을 하다보면 굉장히 짜증나고 위험한 문제 중 하나는 연쇄적인 코드의 수정일 것이다.이를 방지하기 위해서 우리는 아키텍처를 사용한다. 그런데 이렇게 아키텍처를 구상하고 나름 잘 짜고 있다고 생각했는데.... 연쇄적인 코드의 수정이 필요한 이유 중 하나가 데이터 모델이 수정되니깐 다 수정해야하네... 이라면 꼭 이 글을 읽어보길 바란다. 우리가 아키텍처를 구성하는데 중요하게 보는것 중 하나는 관심사 분리이다.클린 아키텍처의 경우 동심원 안쪽으로 들어갈 때, 자신의 안쪽에 있는 하나의 레이어에만 의존해야한다. 여기서 우리는 주목해야하는 점이 있다. 그것은 바로 데이터 모델은 왜 여기에 포함하지 않는가 이다. 처음 프로젝트에 들어가고 코드를 작성하다보면 흔히 하는 실수중 하나이다(적어도 나는 그랬었다..

개발/아키텍처 2025.08.12

[Android] 순수 코틀린 모듈 추가하기

개발을 할 때, 안드로이드 뿐만 아니라 서버나 웹같이 다른 플랫폼도 고려한다면 안드로이드에 종속되지 않는 모듈을 만들어야할 때가 있다. 코틀린 같은 경우에는 스프링부트와 같이 다른 곳에서도 쓰이는 언어기 때문에 범용적으로 쓸 수 있는 기능인 경우 안드로이드 모듈 말고 코틀린 모듈로 만들면 유용할 때가 있다. 이번 프로젝트를 하면서 AI 도슨트 어플을 만드는데, 이러한 경우를 고려해서 코틀린 모듈을 만들기로 했다. 이렇게 New Module이 나타나는데 눌러주면 왼쪽에서 Java or Kotlin Library를 선택해주면 된다. 그러면 이렇게 lib 모듈이 생성된다. 여기서 test코드를 작성하려고 test에 대고 우클릭을 하면 이렇게 파일을 추가하는 항목이 안나오는데 일부러 그렇게 만든건지 아니..

[AI] RAG Reasoning (feat. CLOVA)

https://api.ncloud-docs.com/docs/clovastudio-ragreasoning RAG Reasoning api.ncloud-docs.com 위의 내용은 RAG Reasoning의 공식 문서이다. 이번에 RAG Reasoning을 조금 더 쉽게 이해하려면 요청 응답 예시와 파라미터를 살펴보는게 좋을 것 같다. 그 전에 RAG Reasoning의 작동 방식을 이해하는게 좋다.간단하게 사용자 질문을 입력AI가 답변에 필요한 검색 함수(Function)를 선택해 호출검색 결과(문서 등)를 받아, 그 근거를 바탕으로 최종 답변을 생성이렇게 3단계로 나누어진다. Step 1 . 유저의 요청curl --location --request POST 'https://clovastudio.strea..

AI 2025.07.25

[AI] 리랭커 (feat. CLOVA)

https://api.ncloud-docs.com/docs/clovastudio-reranker 리랭커 api.ncloud-docs.com우선 위의 내용은 리랭커를 활용하는 방법에 대한 공식 문서이다. "검색한 문서와 사용자 쿼리 간 연관도를 평가하여 관련성 높은 문서들을 선택하고, 그 결과를 요약 및 압축하여 RAG 답변을 생성합니다. 전체 검색 문서가 아닌 사용자 쿼리와 연관도가 높은 문서만 선별하여 사용하기 때문에 토큰 소비를 효율적으로 절감하면서도 신뢰도 높은 결괏값을 얻을 수 있습니다." 라고 문서에 작성되어있는데 https://www.ncloud-forums.com/topic/525/ 리랭커 활용법 : CS 문의에 답변하는 RAG 시스템 구현하기최근 LLM을 활용한 RAG 시스템 구축이 활발..

AI 2025.07.25

[AI] RAG(Retrieval-Augmented Generation) feat. CLOVA

미래에셋 AI 페스티벌에 참여하며....RAG를 다뤄볼 기회가 생겼다.https://github.com/rlaalsgh988238/AnalystAI GitHub - rlaalsgh988238/AnalystAI: 2025 미래에셋증권 AI 페스티벌2025 미래에셋증권 AI 페스티벌. Contribute to rlaalsgh988238/AnalystAI development by creating an account on GitHub.github.com(자세한 내용은 리드미에...) 우선 간략하게 RAG에 대해서 설명하자면 검색기반 생성형 AI이다.https://guide.ncloud-docs.com/docs/rag-overview AI를 사용하면 할루시네이션이 자주 발생하게 되는데 검색 기반으로 답변을 생성..

AI 2025.07.25

[Spring Boot] 스프링 Initializr를 이용한 프로젝트 생성

요즘 스프링 부트를 통해 서버 개발하는 작업을 하고 있는데요, 글을 통 못써서 조금씩 다시 쓰려고 합니다. 언어는 자바, 종속성 및 빌드 관리는 gradle을 통해 진행을 하였습니다. 주의할 점이 스프링부트 3.0 이상 버전부터는 자바 17부터만 진행하기 때문에 11로 개발하는것이 불가하다는 점 알고있어야 합니다. 스프링 이니셜라이저를 이용하면 초반 종속성 관리를 진행해줍니다. 당연히 이후에 직접 그래들을 통해 종속성을 계속 추가해줄 수 있지만, Lombok이라던가 Spring Boot devTools 같은 자주 사용하는 부분들을 클릭 한번으로 추가해주기 때문에 상당히 간편합니다. 필요한 디펜던시를 선택한 후에, create를 선택하면 새로운 프로젝트가 생성됩니다.

개발/서버 2023.09.21