GDSC Sookmyung 활동 76

Tailwind CSS + CSS Resource

Tailwind CSS 오픈소스 CSS 프레임워크 중 하나로, Utility-First 컨셉을 가져 미리 설정한 유틸리티 클래스를 활용하는 프레임워크입니다. 작은 스타일 변경에도 컴포넌트를 만드는 번거로움이 싫으신 분, 매번 클래스명을 고민하느라 시간이 많이 드시는 분, 일관된 디자인을 하고 싶은 분께 추천드립니다. 사용예시 .text-lg { font-size: 1.125rem/* 18px */; line-height: 1.75rem/* 28px */; } .font-semibold { font-weight: 600; } .text-gray-900 { --tw-text-opacity: 1; color: rgba(17, 24, 39, var(--tw-text-opacity)); } 위의 HTML 코드는 ..

Spring Batch 알아보기

Spring Batch란? Spring Batch는 대량의 데이터를 처리하기 위한 오픈소스 batch processing 프레임워크이며, 로깅/추적, 트랜잭션 관리, 작업 처리 통계, 작업 재시작, 건너뛰기, 리소스 관리 등 대용량 레코드 처리에 필수적인 기능을 제공합니다. 또한 최적화 및 파티셔닝 기술을 통해 대용량 및 고성능 배치 작업을 가능하게 하는 고급 기술 서비스 및 기능을 제공합니다. Spring Batch는 간단하고 직관적인 프로그래밍 모델을 제공하며, 스프링 생태계의 다른 기술과의 통합도 용이합니다. 이를 통해 개발자는 빠르고 쉽게 배치 작업을 개발할 수 있습니다. Spring Batch의 구성 요소 Spring Batch는 크게 Job, Step, Chunk, ItemReader, Ite..

MSA, 마이크로 서비스 아키텍처

넷플릭스, 배달의 민족, 쿠팡 그리고 11번가. 이 유명한 서비스들의 공통점이 있습니다. 바로 대규모 서비스라는점. 그리고 마이크로 서비스 아키텍처(MSA)를 도입했다는 점입니다. 오늘 이 MSA에 대해 공부한 내용을 공유해보도록 하겠습니다. 그렇다면 과거로 돌아가 이 기업들이 MSA의 이전에는 어떤 아키텍처를 사용하였는지 부터 시작하도록 하겠습니다. 모놀리식 아키텍처 모놀리식 아키텍처는 여러 기능들이 하나의 애플리케이션에 뭉쳐있는 서비스 입니다. 기능들을 단 하나의 코드베이스로 개발하고 배포 시 단일 데이터베이스를 사용합니다. 초기에는 개발 속도도 빠르고 배포하기도 쉽고 기능을 붙이기도 쉽습니다. 하지만 이 한 애플리케이션에 기능을 점점 붙여갈수록. 즉, 대규모 서비스가 되어갈수록 문제점이 들어나는데요..

Apache Kafka 알아보기

아파치 카프카(Apache Kafka)란? 애플, 페이팔, 우버, 넷플릭스, 스포티파이 등 수많은 글로벌 기업에서 사용하는 빅데이터 처리를 위한 분산 스트리밍 플랫폼이다. 아파치 카프카는 빅데이터 시대의 서비스를 지탱하는 훌륭한 오픈소스로 자리잡았다. 분산 스트리밍 플랫폼으로 운영되는 아파치 카프카는 빅데이터 플랫폼뿐만 아니라 MSA(Microservice Architecture) 구조의 백엔드 아키텍처에서도 중요한 역할을 하고 있다. Befor Kafka 간단한 단방향 통신에서 시간이 지날수록 Source Application과 Target Application이 많아지면서 데이터를 전송하는 라인이 많아지고 복잡해짐 데이터를 전송하는 라인이 많아지면 배포와 장애에 대응하기 어려워짐 데이터 변경이 있을 ..

AI코딩

AI 코딩이란 말을 들어보셨나요? AI 코딩은 쉽게 말해 AI가 코딩을 해주는 것을 의미합니다. 최근 들어, AI 코딩 프로그램이 많이 생겨나고 있는데요. AI 코딩이 만들어지게 된 배경은 무엇일까요? 첫 번째, 개발자를 양성하기 위한 시간과 어떤 서비스를 출시할 때 그것을 개발하고 테스트하고 검증하는 시간을 단축하기 위해서입니다. 두 번째로는 비개발자도 코딩할 필요성의 증가 때문입니다. 이때 개발자가 존재하지 않아도 AI코딩을 이용하면 개발자의 업무까지 대체할 수 있기 때문입니다. 즉, 반복적인 작업은 컴퓨터에게 맡기고 인간은 추상적인 검토와 판단 및 명령만 내리면 되게 끔 하기 위해서입니다. 이렇게 많은 도움을 주는 AI코딩은 현재 어떠한 것들이 있을까요? AI코딩의 대표적인 예시는 다음과 같습니다...

빅데이터를 알아보자

빅데이터란? 통상적으로는 크고, 복잡하고, 일시적이고, 무질서해서 보통의 컴퓨터로는 처리할 수 없는 대량의 데이터를 말한다. 최근에는 대량의 데이터에서 가치를 추출하고 결과를 분석하는 기술 등을 포괄하는 용어로 변화하는 추세. 세계적인 컨설팅 기관인 매켄지(Mckinsey)는 빅데이터를 기존 데이터베이스 관리도구의 데이터 수집, 저장, 관리, 분석하는 역량을 넘어서는 규모로서 그 정의는 주관적이며 앞으로도 계속 변화될 것이라고 언급하고 있다. 기존 데이터와의 차이 다양한 방법으로 수집된 여러 형태의 데이터 집합을 의미하지만, 비정형화된 데이터에 초점 병렬 처리를 위한 컴퓨터 시스템들이 필요할 정도의 큰 데이터셋 가치 창출에 의미가 있으며 이를위해 타당성(Validity), 신뢰성(Veracity) 확보에..

GIT 브랜치 전략이란

GIT 브랜치 전략이란? 브랜치 전략은 여러 개발자가 협업하며 하나의 저장소를 사용하는 환경에서 저장소를 효과적으로 사용하기 위한 워크플로우. 즉, 브랜치 생성에 규칙을 만들어 협업을 유연하게 해주는 방법론 개발시에 브랜치 전략이 꼭 필요할까? 메인 브랜치에서만 작업하는 경우에 하나의 기능을 개발하기 위해 여러 개의 커밋을 한다면, 해당 기능이 완성되기 전까지 메인 브랜치의 코드는 불완전한 상태로 있게된다. 협업을 하는 프로젝트라 생각해보면, 내가 작업 중인 파일을 누군가 건드려 개발한다면 히스토리가 메인 브랜치에 섞여 구분이 어렵다. 브랜치 기능을 사용하면 다른 브랜치에 영향을 받지 않고 독립적인 환경에서 기능을 개발할 수 있어 여러 기능을 여러 사람이 독립적으로 개발할 수 있게 되어 협업시 필수적으로..

스프링부트 로그 찍기

안녕하세요, 이번 10분 세미나에서 발표를 맡은 컴퓨터과학전공 주다애입니다. 여러분 다들 개강 무사히 하셨나요? 학기가 지날수록 개강은 설렘이나 기대감보다는 귀찮음과 짜증이 더 많이 나는 일인 것 같습니다. 방학을 치열하게 보내시고 개강을 맞이한 후 처음하는 세미나이기 때문에 빠르고 쉽고 간단하게 준비해 보았습니다. 편하게 들어주시면 좋을 것 같아요! 제가 준비한 주제는 ‘스프링부트 로그 찍기’입니다. 어떤 주제를 할까 고민을 많이 하다가, 제가 직접 프로젝트에 도입해보고 굉장히 편리한 기능이라고 느낀 ‘로깅’ 이라는 기능을 공유하고 싶어서 준비해보았습니다. 목차는 다음과 같습니다. 먼저 로깅에 대해 소개를 하고 자바에서 사용하는 logback 프레임워크란 무엇인지, 어떻게 파일을 설정하고 어떤 구조로 ..

커스텀 데이터셋 만들기

안녕하세요 저는 오늘 10분세미나를 맡게된 정시은입니다. 제가 오늘 발표할 주제는 ‘커스텀 데이터셋 만들기’입니다. 저의 경험담을 바탕으로 간단하게 커스텀데이터셋을 만드는 방법을 소개해드리고자 합니다! 이미지에서 검출하고 싶은 객체의 위치, 즉 바운딩 박스를 찾고 객체의 카테고리를 분류하는 작업을 object detection이라고 하는데요, 객체 검출을 할때에는 대표적으로 널리 알려진 yolo 모델을 사용합니다. object detection과 같이 원하는 이미지를 인식하고자 하는 컴퓨터비전관련 프로젝트나 작업을 하게 됐을때 적합한 데이터셋이 필요할 때가 있습니다. 저의 경우, 눈송이를 인식하여 눈송이의 표정에 따른 감정인식을 하는 모델을 만들고자 하였는데, 먼저 눈송이와 다른 캐릭터들을 구분짓기 위해..

MVC vs MVVM

노션 링크: https://ember-slope-7c6.notion.site/MVC-vs-MVVM-ae2523065f384be98b0ab2424373dbf2 MVC vs MVVM 아키텍쳐 패턴이란? ember-slope-7c6.notion.site 아키텍쳐 패턴이란? 소프트웨어의 구조를 패턴화 한 것 소프트웨어 아키텍처의 공통적인 발생 문제에 대한 재사용 가능한 해결책 디자인 패턴과 비슷하지만 더 넓은 범위에 속합니다. 💡 디자인 패턴이란? 객체 지향 프로그래밍을 설계할 때 자주 발생하는 문제에 대해서 처리하기 위해 사용되는 패턴 개발자들 간의 커뮤니케이션 효율성을 높이는 기법 ex) 생성 패턴, 구조 패턴, 행위 패턴 아키텍쳐 패턴을 사용하는 이유 구조화 된 패턴을 사용하지 않을 경우, 코드 라인 수가..