목록2024/10 (10)
imhamburger 님의 블로그
같은 어플리케이션을 도커를 이용해 여러 개의 컨테이너로 생성하여 실행하고 로드밸런서를 이용해 분산시키는 것을 해보려고 한다. 나는 간단하게 웹사이트를 만들었고 도커를 이용해 3개의 컨테이너를 실행한다고 가정해보자.웹사이트는 Apache httpd 웹 서버 소프트웨어를 이용해 서빙할 것이다. apache httpd 는 도커 이미지를 사용하였다. (httpd 도커) 도커파일은 다음과 같이 설정해주었다. DockerfileROM httpd:2.4ARG REPO_URL=https://github.com/hamsunwoo/hamsunwoo.github.io.gitCOPY ./my-httpd.conf /usr/local/apache2/conf/httpd.confRUN ["apt-get", "update"]RUN [..
파이널 프로젝트 시작 전에 2개의 프로젝트가 남아있는데 그 중 하나는 자바를 이용한 프로젝트였다.프로젝트 기간이 짧아 어떻게 할까 고민중에 로그인 기능을 구현하자고 의견을 내었다. 2일이라는 시간 안에 막 엄청난 걸 만들 수는 없을 것 같고...기능 하나를 제대로 만들어보자. 그리고 파이널 프로젝트 때도 필요한 기술들을 다뤄보자! 해서 결정하게 되었다. 팀프로젝트 주제로그인 기능을 위한 REST API를 Java로 구현메인 로그인 페이지는 Streamlit으로 제작카카오 로그인 연동을 지원로그인 회 회원가입, 회원탈퇴, 회원정보변경 기능 구현 나의 역할REST API를 Java로 구현로그인 화면 구현회원가입 화면 구현 데이터베이스 설계 및 구축 우리가 사용한 기술1. Java 17버전2. Python ..
json-server를 이용하여 간단하게 CRUD를 실습해보자. json-server는 간단하게 가짜 REST API 서버를 만들 수 있는 도구이다. 주로 프론트엔드 개발에서 백엔드 API가 완전히 준비되지 않았을 때, 테스트 목적으로 사용된다. JSON 파일 하나를 데이터베이스처럼 사용하여, RESTful API를 빠르게 생성할 수 있다. 1. json-server 설치하기npm install json-server 2. data.json 실행하기npx json-server data.json 3. GETcurl -X GET http://localhost:3000/person 결과 4. POSTcurl -X POST -d '{"firstName": "M", "lastName": "GG"}' h..
도커 컴포즈는 단일서버에서 여러개의 컨테이너를 하나의 서비스로 정의해 컨테이너를 묶음으로 관리할 수 있다. 여러 개의 컨테이너가 하나의 어플리케이션으로 동작할 때 도커 컴포즈를 사용하지 않는다면, 각각 한개씩 생성해야 하는 번거로움이 있다.컨테이너의 수가 많아지고 정의해야할 옵션이 많아진다면 도커 컴포즈를 사용하는 것이 좋다. 도커 컴포즈를 사용하는 방법은 도커 공식문서에 나와있다. (공식문서) 이제 도커 yml 파일을 이용해 만들어놓은 API 와 MariaDB를 함께 실행시켜보자.MariaDB는 도커허브에 있는 것을 사용하였다. (MariaDB 도커허브) docker-compose.ymlservices:#데이터베이스 database: image: container_name: en..
Jenkins는 오픈 소스 자동화 서버로, 주로 소프트웨어 개발에서 CI/CD(지속적 통합/지속적 배포)를 구현하는 데 사용된다. Jenkins는 빌드, 테스트, 배포 등의 프로세스를 자동화하여 개발자와 운영팀이 소프트웨어의 변경 사항을 빠르고 안정적으로 배포할 수 있게 도와준다. CI/CD?지속적 통합(CI, Continuous Integration): Jenkins는 개발자들이 코드 변경 사항을 Git과 같은 버전 관리 시스템에 자주 병합할 수 있게 돕는다. Jenkins는 이러한 병합이 일어날 때마다 자동으로 빌드를 실행하고, 테스트를 진행하여 코드의 품질을 유지할 수 있도록 한다.지속적 배포(CD, Continuous Delivery): Jenkins는 애플리케이션을 자동으로 서버에 배포할 수 ..
스프링부트를 알기 전에 스프링부터 알아보자. 스프링(Spring) 스프링(Spring)은 자바(Java) 기반의 애플리케이션 프레임워크이다.프레임워크란 말그대로 뼈대를 의미하는데 애플리케이션 프레임워크는 애플리케이션 개발을 빠르고 효율적이게 하기 위한 툴이다. 예를 들어, 우리가 웹사이트를 만든다고 하면 로그인 기능이나 데이터베이스 연결 같은 부분을 매번 새로 만들 필요 없이,스프링이 제공하는 기능을 써서 바로 사용할 수 있다.로그인은 Spring Security를 사용하고 데이터베이스는 Spring Data JPA를 사용하는데 복잡한 SQL을 작성하지 않고 자바 객체로 데이터베이스와 쉽게 상호작용할 수 있게 도와준다. 다시 말하자면,각 프로젝트에서 개발자는 이러한 스프링 프레임워크를 이용하여 프로그램의..
자바는 파일 확장명인 .java인 파일을 생성하고 자바 언어로 코드를 작성한 후 이렇게 만든 자바 소스 파일을 javac 명령어로 컴파일해야 한다. 컴파일이 성공하면 확장명이 .class인 바이트 코드 파일이 생성된다. 컴파일 명령어javac .java 참고javac -d bin src/.java 자바 소스 파일(App.java)을 컴파일하여 .class 파일을 특정 디렉터리(bin)에 저장하는 명령어이다. 컴파일이 가능하다면 당연히 디컴파일도 가능하다.디컴파일 다운로드 디컴파일 패키지?를 다운로드한 후 아래 명령어로 실행하면 된다. 디컴파일 실행하기java -jar jd-gui-1.6.6.jar 자바 기초익히기 1. String Copypublic class StringCopy { public ..
다시 팀프로젝트 기간이 돌아왔다. 이번에도 3일간 과제를 수행하면 된다! 팀구성은 5인 1조인데 우리의 팀 이름은 "3Kcal" 으로 정했다. 딱히 팀 이름에 그럴싸한 아이디어가 떠오르지 않아...약간 막지은 느낌이 있다..ㅋ 팀프로젝트 주제임의의 ML 및 DL 모델에 대한 서비스를 관리 제어 하는 내부 관리 프로그램streamlit 을 통해 관리 화면을 html css js 없이 python 만으로 생성관리화면은 예측 결과에 대한 검토 및 잘못된 예측에 대한 코맨트, 라벨 기록 가능그 외 관리 화면에서 위 검토된 코맨트, 라벨을 기반으로 서비스 예측 정확성 통계 도출 모델 선정우리가 선택한 ML은 글을 읽어 감정을 예측하는 모델이다. (여기) 이 모델을 선택한 이유는... 개인적인 생각으로는! 이전에 ..
지난글에서는 "ml-worker" 모듈을 자동적으로 실행해줄 cron 세팅하였는데, 이번에는 cron이 아닌 Airflow를 이용해 스케줄러 작업을 해보고자 한다.그리고 하는김에 CeleryExecutor를 곁들인......(사실 이것이 메인) 에어플로우에는 3개의 Executor가 있다.종류특징SequentialExecutor모든 태스크를 한 번에 하나씩 순차적으로 실행LocalExecutor여러 개의 태스크를 병렬로 실행할 수 있지만, 같은 호스트 내에서만 가능CeleryExecutor여러 대의 컴퓨터에서 병렬로 태스크를 실행할 수 있으므로 가장 큰 확장성을 제공 Celery가 뭔데? Celery를 쉽게 설명하자면, Celery는 컴퓨터에게 어떤 "일"(작업)을 나중에 따로 처리하도록 시킬 수 있게..
사용자가 이미지를 업로드하면 hotdog인지 not hotdog 인지 판별해주는 API 기능을 만들고, 사용자가 보는 프론트쪽이랑 API 기능을 연결할 것이다. (판별해주는 딥러닝 모델은 이미 만들어져있는 것을 사용할 것이다.) 그러면 우리가 만들어줘야할 건 2가지이다.판별해 결과를 출력해주는 API 기능사용자 웹페이지 (매우 간단하게..!)사전 준비사항핫도그를 판별해주는 모델 (여기)핫도그를 판별해주는 모델은 이미지를 업로드하면 다음과 같이 출력된다.#예시 { "label": "not hot dog", "score": 0.7514119744300842 "label": "hot dog", "score": 0.2524546346134245 } 즉, 업로드한 이미지가 not hot dog 점수가 높다면 그것..