본문 바로가기

분류 전체보기

(21)
웹소켓(WebSocket)이란? 우리 팀은 시각장애인을 위한 점자 변환 시스템을 개발하고 있다. 점자 입력 장치에서 데이터를 받아 서버에서 변환한 뒤, 그 결과를 다시 점자 기기로 응답하는 구조였다.그런데 대회에서 시연을 할 때, 이 과정을 웹 화면에도 실시간으로 보여주면 좋겠다는 아이디어가 나왔다. 그래서 팀원들과 논의해본 결과, 점자 기기에 응답을 보내면서 동시에 웹 화면에도 데이터를 전달하려면 웹소켓을 도입하는 게 적절하겠다는 결론에 도달했다.기존 HTTP 방식은 요청-응답 기반이라 실시간 양방향 통신이 어렵다는 한계가 있었고, 웹소켓은 서버에서 클라이언트로 직접 데이터를 푸시할 수 있어서 우리가 원하는 방식에 잘 맞았다. 웹소켓(WebSocket)이란?클라이언트와 서버 사이에 지속적인 연결을 유지하면서 양방향 통신이 가능하게 해..
JASYPT를 사용한 property 암호화 팀원과 프로젝트를 공유하기 위해 GitHub에 코드를 올릴 때, application.yml 파일에 포함된 DB 비밀번호나 API 키와 같은 민감한 정보를 그대로 올리면 외부에 노출될 위험이 있다.이러한 보안 문제를 방지하기 위해 고민한 끝에 적용하게 된 것이 바로 Jasypt이다. 1. JASYPT란? Jasypt는 Spring Boot 애플리케이션에서 민감한 정보를 암호화하여 관리할 수 있도록 도와주는 Java 라이브러리이다.예를 들어 DB 비밀번호나 API 키와 같은 값을 application.yml에 평문으로 작성하지 않고, 암호화된 상태로 저장한 뒤 애플리케이션이 실행될 때 자동으로 복호화하여 사용할 수 있도록 구성한다.2. 사용방법- gradle 의존성 추가implementation 'com..
모바일 앱 개발 방식의 종류와 특징(모바일 웹, 웹앱, 하이브리드 앱, 네이티브 앱) 교내 소프트웨어 경진대회에 참여하기 위해 앱 개발 방식을 선택해야 하는데 나는 모바일 앱 개발 경험이 없어서 사전 조사를 해보았다.모바일 앱 개발 방식에는 네이티브 앱, 모바일 웹, 웹 앱, 하이브리드 앱 크게 4가지가 있다. 1. 네이티브 앱우리가 흔히 '앱'이라고 말하면 떠올리는 가장 보편적인 앱 개발 방식이다. 카카오톡과 같은 앱이 이에 해당한다. iOS 및 안드로이드OS가 요구하는 Java, Kotlin, Swift, Objective-C와 같은 언어를 사용하여 개발된다.또한 네이티브 앱 외에도 안드로이드OS와 iOS에서 동시 개발이 가능한 Flutter, React-Native와 같이 크로스 플랫폼 모바일 앱 개발을 위한 프레임워크도 존재한다.플랫폼에 맞는 언어와 도구로 직접 개발한 앱가장 뛰어..
[인공지능] 기말시험 대비 [기본 개념] * 생성형 인공지능(generative AI)대규모 데이터 집합을 대상으로 학슴함으로써 이를 일반화하여 데이터에 내재한 패턴이나 구조를 습득예) 챗봇(chatbot): ChatGPTm Copilot, Gemini 등Text-to-image 모델 : DALL-E, Midjourney, Stable Diffusion 등Text-to-video 모델 : Sora, Runway 등 * 약한 인공지능(weak AI): 좁은 인공지능(narrow AI), 특정 직업이나 한정된 범위의 작업을 수행하도록 설계된 인공지능 시스템 * 인공 일반지능(Artificial General Intelligence:AGI): 강한 인공지능(strong AI), 사람이 할 수 있는 어떠한 지적인 작업이든 사람만큼, ..
OSI 참조 모델(Open System Inter-connection) 네트워크 아키텍처란 컴퓨터 통신망의 기본 뼈대로, 컴퓨터 통신망의 핵심으로 컴퓨터 통신망의 물리적 요소들과 기능, 구성, 동작 원칙, 절차, 통신 프로토콜 등을 위한 프레임워크라고 할 수 있다.초기 네트워크 아키텍처는 보안 상의 이유로 폐쇄형 네트워크 형태였으나 이후 여러 사용자가 자원을 공유할 수 있는 개방형 네트워크 아키텍처의 형태로 발전하였다.개방형 네트워크 아키텍처의 대표적인 모델로는 OSI 참조 모델과 인터넷 통신망 구조(TCP/IP)가 있다.오늘은 이 중에 OSI 참조 모델에 대해 알아보자. OSI 참조 모델(Open System Inter-connection): 특정 시스템의 하드웨어나 소프트웨어에 관계 없이 서로 다른 시스템 간에 데이터 통신을 용이하게 하기 위한 표준 모델 OSI 7계층O..
도커 스터디 3주차 - Kubernetes Availability & Network 1. 쿠버네티스 가용성(Kubernetes Availability)쿠버네티스 가용성 확보를 위한 방법에는 크게 HPA, VPA, CA 3가지가 있다.HPA (Horizontal Pod Autoscaling) : Pod 수평 확장 (스케일 In - Out)VPA (Vertical Pod Autoscaling) : Pod 수직 확장 (스케일 Up)CA (Cluster Autoscaling) : Node 확장 (Cloud 환경)⇒ HPA - 지표를 확인해서 똑같은 파드를 하나 더 생성 ⇒ VPA - 요청을 받아서 메모리와 CPU 양이 적어서 2가로 확장 ⇒ CA - 노드를 하나 더 생성 Metrics Server Kubernetes에서는 기본적으로 리소스 사용량(CPU, 메모리) 정보를 제공하지 않기 때문에,..
[Linux] 크론탭(Crontab)으로 로그 파일 관리하기 로그 파일이 계속해서 쌓이면 크기가 과도하게 커질 수 있으며, 이로 인해 로그를 읽거나 분석하는 데 많은 메모리와 시간이 소요될 수 있다. 이러한 문제를 방지하기 위해 일정 시간이 지나거나 파일 크기가 특정 용량을 초과하면 기존 로그를 백업하고 새로운 로그 파일을 생성해야 한다. 백업된 로그 파일이 일정 개수를 초과하거나 오래되면 자동으로 삭제하도록 설정할 수 있다. 이러한 로그 파일의 주기적인 관리 과정을 로그 로테이션(Logrotate) 이라고 한다.지난 번에는 GC 로그를 날짜별로 분리하여 저장하고, 최근 한 달 치만 유지하도록 logrotate를 활용한 로그 관리 방식을 적용했다.이번에 작업한 톰캣 로그파일은 기본 기능에 의해 이미 날짜별로 자동 생성되고 있으므로 logrotate를 사용해 별도로..
도커 스터디 2주차 - Kubernetes 소개 & Kubernetes 기본 활용 1. 쿠버네티스쿠버네티스란? 컨테이너를 쉽고 빠르게 배포하고 확장해주는 컨테이너 관리 자동화 오픈소스 플랫폼이다. Container Orchestration (조율, 관리) 쿠버네티스(컨테이너 오케스트레이션) 필요성 컨테이너는 클라우드 네이티브 애플리케이션의 표준 컴퓨팅 단위가 되고있고, 그렇기때문에 운영 환경에서 도커(컨테이너)를 단독으로 사용 시 매번 수동으로 확장하는 것이 어려워졌다. 따라서 쿠버네티스를 통해 애플리케이션 확장과 장애 조치를 처리하고 배포 패턴 등을 제공하게 된 것이다. 예를 들어 가용성을 위해서 서비스 컨테이너 100개를 각각 이중화 해서 배포한다고 할 때, 직접 Docker CLI (Docker run) 를 통해서 배포하기는 어렵다. 이런 경우에 쿠버네티스가 필요한 것이다. 쿠버..