전체 글 28

Ep 21. 인공지능

Prologue . AI 보편화 요즘 형이 챗GPT에 빠져 나에게 막 AI로 만든 이미지나 영상을 이것저것 보낸다...IT에 관심도 없거니와 컴퓨터 게임도 하지 않으면서 돈 한 푼 허투로 쓰지 않는 형이 심지어는 챗GPT 유료결제까지 했다고 해 나로서는 꽤 놀라운 일이었다.나야 개발을 공부하고, 또 이런저런 문서 작성할 게 많았어서 AI 기술의 혜택을 보며 완전 밀접하게 보내지만IT에 관심이 없는 형까지 AI에 푹 빠졌다하니 이제는 정말 모두가 AI에 영향을 받는구나 싶었다. 특히나 이번주 챗GPT에서 도입한 새로운 기술로 인해 세계적으로 자신이 가진 사진을 지브리풍 이미지로 변환하는 것이유행이 되면서 챗GPT 주간활성사용자 수가 처음으로 5억명을 돌파했다고 한다... 개발을 시작하게 되면서 나도 AI를..

[Android]헬스커넥트 연동 앱 만들기

개발이유 팀 프로젝트에서 핵심적인 기능이 스마트워치(갤럭시 워치)에 있는 건강 데이터를 스프링 서버로 가지고와 사용자에게 부가적인 서비스를 제공하는 것이었다.그러나 문제는 삼성헬스에서 내 스프링 서버로 데이터를 받는 API는 없다.갤럭시워치에 쌓이는 데이터는 내 모바일 앱의 삼성헬스에 연동되는데 그 데이터는다시 헬스커넥트(삼성과 구글에서 만든 앱)에 연동된다.그래서 건강데이터를 스프링 서버로 가지고 오는 유일한 방법은  헬스커넥트의 데이터를 가지고와서 우리 스프링 서버로 보내주는 앱을 만드는 것이다. 다만, 스프링 위주의 웹개발만 해봤을 뿐 앱개발과 코틀린은 처음이었다.그래서 아래 나같은 사람을 위해 차근차근(?) 설명해놓았으니 GPT에게 도움을 받아가면 충분히 할 수 있을 것이다. 1.안드로이드 스튜디..

Ep 20. 각성효과

Prologue . 각성효과? 팀 프로젝트를 진행하는 데 있어 난관이 생겼다.스마트워치에 기록된 건강데이터를 스프링으로 가져오기 위해서는 자체 앱을 만들어야하는 상황이었다.지금까지 배운 것은 웹개발에다 앱 개발환경이니 언어니 아무 것도 모르기에 난관이었다.일단은 그래도 필요한 상황이니 일단 주말에 시도는 해보기는 하는데 각이 안나오면 바로 포기해야겠다는 판단이 들었다.다른 할 게 많았기에 앱을 만드는데 시간을 너무 쏟아버리면 안 되기 때문이다. 그리고 금요일, 학원이 오후 6시에 문을 닫아 몇명의 동기들과 함께 수업이 끝난 뒤 카페에 가서 자습을 했다.나는 카페인을 먹으면 잠을 못 자고,배가 아프기도 해서 카페인이 들어간 음료는 절대 먹지 않는데,그 날따라 밀크티가 땡켜 밀크티를 마셨다. 카페인은 중추신..

[개념]WebRTC 개념 정리

0.WebRTC(Web Real-Time Communication)이란?인터넷 브라우저나 앱에서 플러그인 없이 오디오,비디오와 같은 데이터를 실시간으로 주고받는 통신을 가능하게 해주는 기술로 P2P방식으로 작동하여 서버에 부담이 적은 것이 특징이다.(p2p란? Peer to Peer의 줄임말로 서버를 거치지 않고 사용자끼리 직접 데이터를 주고받는 방식을 의미(peer는 동등한 위치에 있는 상대를 뜻하는 것으로 여기서는 사용자와 사용자를 의미한다)) 그리고 WebRTC를 구현하기 위해서는 아래 개념들을 반드시 숙지하고 있어야 한다. 1.Signaling(시그널링)위에서 WebRTC는 P2P 방식으로 작동한다고 했다. 먼저 P2P 통신이 가능하기 위해서는 이 Signaling이란 과정을 거쳐야한다.시그널링은..

EP 19. 피로누적

Prologue .고쳐야 할 점 월요일,화요일은 중간 프로젝트 배포 과제가 주어졌다.사실 배포 작업은 다 같이 하는 작업이라기보다는 한 사람이 키를 잡고 진행하는 것이 훨씬 효율성이 낫다고 생각한다.그래서 나는 팀원들에게 모두가 배포를 할 줄 알면 좋으니 월요일은 각자 배포를 해보자고 제안했다.그리고 실제 배포 할 도메인은 우리 중 제일 잘하는 준혁님이 맡으며, 발표까지 진행해달라고 했다.나는 전 주 주말에 배포를 한 번 해봤어서, 월요일에 내가 배포했던 방식을 다시 공부하며 정리하였다.(그러나 사실 각 팀이 배포한 사이트에 들어가 노느라... 생산성있게 하진 못하였다..ㅎ)    화요일 발표까지 잘 끝났고 팀원들 덕분에 배포 프로젝트도 좋은 성과를 낼 수 있었던 것 같다.그리고 프로젝트를 마무리하며 강..

[AWS]백엔드 배포 오토 스케일링 정리-2

1. Pod 스케일링1-1. HPA(Horizontal Pod Autoscaler)와 Metrics Server 설치파드 스케일링이 진행되려면 파드의 수를 자동으로 늘리거나 줄여주는 쿠버네티스 리소스가 필요하다. 이 역할을 하는 것이 HPA다. 그런데 이 HPA가 파드의 수를 늘리거나 줄여주는 행동을 하는데 있어,CPU 혹은 메모리 사용량 같은 기준점이 있어야 한다. 따라서, 클러스터 내 각 노드와 파드의  CPU와 메모리 사용량을 수집하는 컴포넌트가 필요한데 이것이 Metrics Server다. 즉, Metrics Server가 HPA에게 CPU와 메모리 사용량과 같은 데이터를 전달해주고 그 데이터를 바탕으로 HPA가 스케일 인/아웃을 결정한다)*스케일 아웃: 서버나 노드,인스턴스의 개수를 늘리는 것*..

[AWS]백엔드 배포 흐름 정리-1

본 포스트는 단계별로 상세히 기술한 것이 아니라 흐름별로 정리하여처음 배포할 때 따라하기엔 부적합합니다.배포를 한 번 완료해 본 상태에서 흐름 정리용으로 보실 것을 권합니다.0. 먼저 백엔드의 CORS 관련 코드에 프론트 배포된 도메인을 추가한다.CORS는 어떤 Origin에서 온 요청을 허용할 지 판단하는 것으로 여기에 도메인을 추가해준다.1. AWS에서 EKS, RDS, ElastiCache(Redis OSS)를 생성한다.1-1.EKS백엔드 배포는 EKS 클러스터를 통해 진행하므로 EKS를 먼저 생성한다.생성시에 태그값을 입력하는 칸이 있는데 EC2 AutoScailing까지 염두해두고 아래와 같은 태그값을 붙였다.- 키:k8s.io/cluster-autoscaler/enabed,값:true -> 클..

[AWS] 프론트 배포 흐름 정리

본 포스트는 각 단계별로 상세히 기술한 게 아니라 흐름별로 정리하여처음 배포할 때 보고 따라하기엔 부적합 합니다.배포를 다 한 상태에서 흐름 정리용으로 보시는 것을 추천드립니다.   프론트 배포는 AWS의 S3의 정적 웹 사이트 호스팅을 이용하여 진행하였다.(Vercel을 이용한 매우 편한 방식도 있으니 참고)  S3에는 css,fonts,img,js폴더가 업로드 되어야 하는데,프론트 코드가 있는 위치에서 npm run build 명령어를 치면 dist폴더가 만들어진다. 해당 폴더에 있는 자료를 모두 업로드 하면 된다.그리고나서 아래 버킷 웹사이트 엔트포인트로 들어가서 프론트 화면이 잘 떠지면 성공한 것이다. 그리고 접속 도메인을  깔끔하게하기 위해 Route53에 연결, Https 인증서 처리를 위해 ..

Ep 18. 정진

Prologue. 정진 수업이 끝이 났다. 리눅스,DB,자바,알고리즘,스프링,뷰,배포까지  4개월에 걸친 수업이 끝이 났다.이제 남은 2개월 동안은 최종 프로젝트만 진행하게 된다. 이번주 금요일 아침, '엥? 오늘 금요일이라고?' 놀랬던 것 처럼그 동안의 수업은 빠르게 지나간 것 같다. 내일,모레 이틀에 걸쳐 배포프로젝트가 끝나면 최종프로젝트만 진행하게 되는데이제 수업을 안하는 만큼 가장 멈칫하기 쉬운 시기가 될 것 같다.수업을 따라가지 못하면 안 된다는 긴장감에서 벗어나는 만큼매일 같이 남아서 자습하고, 주말에도 복습했던 그 동력도 잃어 버릴 수 있는 시기니까. 그래서 더 경계하려고 한다.멈칫하지 말고 계속 나아가야한다.정진해야한다. (그래도 지난 수업기간동안 잘 해온 것에 대해 얏호...)  배포 이..

[Spring]조회수 기능(Redis,Spring Batch활용)

조회수를 레디스에 저장,조회하고 RDB에 batch를 활용하여 동기화 하는 방식 1. RedisConfig 클래스 -우선 레디스 연결 객체를 만든다.public class RedisConfig { @Value("${spring.redis.host}") private String host; @Value("${spring.redis.port}") private int port;//yml에 기입해둔 Redis 호스트명과 port번호를 Value어노테이션을 통해 가지고와 속성으로 선언해둔다. //왜냐 레디스의 설정을 담당하는 RedusConnectionFactory객체를 만드는데 우리가 연결할//레디스 서버의 host명과 port번호가 필요하니까 //조회수 관련 @Bean @..