4달 전 · ㅊ 님의 질문 업데이트
개발자 신입 준비
안녕하세요 개발자 준비중인 컴퓨터공학과 4학년 학생입니다. 우선 저는 3회정도의 프로젝트를 진행했고 어쩌다 보니 팀 프로젝트 였지만 제가 거의 풀 스택으로 진행했고 Spring, Node, React를 사용가능하고 아키텍처적으로 규모가 있진 않지만 대략 30개 이상의 Entity를 가지는 규모의 프로젝트들이며 기업인분들에게 좋은 평가를 받은 프로젝트도 있습니다 (Flutter로 간단한 앱도 만들어보았고 , 어플리케이션 프로젝트도 진행 해보았습니다.) React는 타입스크립트 자바스크립트(JavaScript)를 사용해서 나름 자유자재로 만들고 수정할 수있고 타입스크립트(TypeScript)로 전환하는 방향으로 가고 있으며 Node는 레거시로 Express와 sql사용해서 사용했고 Spring은 Spring Boot, Spring MVC, Spring Security,JPA, Redis, JWT 등으로 다양하게 접목 시키고 있고 왜 필요할까를 생각하며 다양하게 접근하고 있습니다. (JPA나 AOP 등의 깊은 공부도 함께 하고 있습니다.) 실제 서버에 배포도 해보았고 지금 진행중인 프로젝트는 AWS를 통해 여러 인스턴스로 나눠서 최적화 하여 배포해볼 예정입니다. 이렇듯 부족하지만 웹쪽에서는 나름 발전의 자신감이 있는편입니다 하지만 제가 코딩테스트에 준비를 하지못했는데 요즘 코딩테스트가 거의 모든 기업 필수여서 아직 프로젝트 진행중이기도 하고 코딩테스트 때문에 아직 입사지원을 생각하지 못하고 있습니다. 코딩 문제를 한번도 풀어본적 없고 기본문법조차 잘 모르고 그런 상황입니다 ㅜㅜ 막상 시작하려고하니 시간적 압박도 그렇고 어떻게 어느정도의 기간을 잡고 해야할지 막막해서 글올려봅니다 선배님들 현직자분들 저는 웹 관련해서 너무 재밌게 찾아보고 고민하며 작업을 하는데 코딩테스트를 따로 준비해서 내년에 입사를 지원하는게 맞을까요 보통 어느정도가 되어야하고 어느정도 시간이 필요할까요 도움 부탁드립니다. 읽어주셔서 감사합니다!
개발자
#신입
#개발자
#코딩테스트
#취업준비
답변 0
댓글 0
조회 94
5달 전 · 최선호 님의 질문 업데이트
docker에 redis 오류 질문드립니다
안녕하세요 현재 개인프로젝트를 진행하고있습니다. 문제가 있는데, docker에서 app(springboot) + mysql + redis container를 만들어서 docker-compose.yml로 띄운후 localhost:8080 접속시 <오류 내용> Caused by: io.netty.channel.AbstractChannel$AnnotatedConnectException: Connection refused: localhost/127.0.0.1:6379 Caused by: java.net.ConnectException: Connection refused 이렇게 오류가 발생하는데 자꾸 redis가 localhost로 뜨는데 docker-compose 설정에는 문제가 없어보이는데 한번 봐주시면 감사하겠습니다 1. docker-compose.yml - db 접속정보와 redis 비밀번호는 지우고 코드를 올렸습니다 - redis 비밀번호는 서버에서 확인했습니다. - redis-cli 명령어로 ping-pong 확인했습니다. - app안에 redis와 db(mysql) 같은 네트워크 보고있음 확인했습니다. - 외부 접속 허용하기 위해 redis,.conf 에 bind 0.0.0.0수정 확인했습니다. - 맥 방화벽도 껐습니다. 2. application.properties -redis 설정정보에 ${SPRING_REDIS_PORT:6379} 이렇게 바인딩도 해봤습니다 -db접속 되는지 확인해봤습니다 아래의 코드를 첨부했습니다. 구글 검색과 gpt검색으로 해결방안 전부 시도해봤지만 자꾸 localhost로 뜨니까 진척도 없고 답답합니다... docker를 처음 사용해보는거라 부족한점이 많은데 어떤 부분에 이해도가 필요한지 봐주시면 정말 감사하겠습니다.
개발자
#springboot
#redis
#docker
#mysql
답변 0
댓글 0
조회 135
7달 전 · 토토로 님의 새로운 댓글
무조건 대학부터 가야할까요?
안녕하세요, 현재 22살이며 군복무를 70일 남긴 상황입니다, 요즘 저에게 있어 “무조건 대학부터 가는게 맞을까?” 라는 큰 고민이있습니다. 우선 지금 저의 상황을 말씀드리고자합니다, 20살때부터 개발 공부를 시작해서 운 좋게도 군복무와 개인 공부를 함께 할 수 있는 상황이라 현재도 서비스를 만들고 있는 상황입니다, 여태까지 두 번의 기획 to 배포까지의 서비스를 만들어보았고 잡다하게 여러 프로젝트를 시도해보았습니다. (덕분에 디자인, 웹퍼블리싱, 프론트, 백엔드, CI/CD에 대한 전반적인 이해도와 각 영역마다 편차는 크지만 숙련도가 조금은 있습니다) 그래서 이번에 만들 서비스는 이전과 다르게 레퍼런스와 서적을 참고하면서 약 3개월간 (현재까지 5권, 12만자 정도의 핵심 내용들을 필기) 개발 중인 상태며, 과거 저가 일했던 시장에서 불편한 점을 개선하는 서비스라 이 서비스를 원하는 분들이 어느정도 있으실거라 생각합니다. (랜딩 페이지를 만들었을 당시 조금의 홍보로 이틀간 200명이 방문 하셨고, 100분 정도가 이 서비스를 원한다는 의견을 보이셨습니다) 여튼, 개발 과정에서도 이미 얻은게 많고(이미 전체적인 구현이 완료됐음에도 불구하고 아쉬운 점들에 대한 작업이 약 80개 정도 남은 상황입니다) 런칭을 했을 때도 어느정도 기대가 되는 서비스를 만들고 있는 상황이며, 전역 후에는 현재 개발 서적을 정리하고 블로그에 기록하는 방식과 같이 나만의 개인 블로그를 만들어서 조금 더 체계적이며 남들이 저를 알기 쉬운 방법으로 CS 공부를 기록할 예정입니다. (이거를 위해서 20살때부터 영어 공부를 했으며, 아직 부족하지만 필요하다면 mit open course도 번역하면서 cs 공부와 영어 공부를 함께하는 방식으로 가고자 합니다) 이후 상반기에 아쉽게 면접에서 떨어진 연합 동아리에 다시 지원해보면서 다른 활동들(우테코, 소마, etc)에도 도전해 보고자 합니다, 이때 cs와 같은 이론적인 부분에서 부족한 점들을 딥 다이브 해보면서 개발자로서 역량을 키울 생각입니다. (이번에 개발 서적을 읽으면서 cs를 빨리 깊게 공부해보고 싶은 욕구가 생겼습니다) 그래서 종합적으로 2025년에는 계속해서 여태껏 만들고 싶었던 서비스를 만들고 부족한 공부를 하며, 여러 활동에 참여하면서 구직 활동도 해보는, 모든면에서 성장하고 싶습니다. 서론이 길었습니다, 지금까지의 이야기만 봤을 때 이미 제 마음이 정해진 상태에서 질문을 드리는 거 같아 죄송한 마음이 들지만, 이런 상황에서도 저가 “착각하고 있는건 아닐까?” 하는 불안함 때문에 “재수를 해서라도 나름 괜찮은 대학을 가야할까?”, “돈만 주면 가는곳이라도 가서 학사라도 따야할까?” 라는 고민이 드는 거 같습니다. 20살, 처음 개발을 시작했을 당시에 품고있던 의심이 어느정도 개발자로써 성장한 이 상황에서도 계속해서 드는 거 같습니다, 그래서 현재 제 생각은 “우선 취업을하고 경력자로써 인정 받을 수 있는 시기에 대학을 가서 학사를 따는게 좋지 않을까”하는 생각입니다. 이외에도 경제적 형편과 같은 추가적인 요소도 있지만 이전에 나이에 비해서 쉽게 돈을 벌었던 경험때문에 오만 또는 자만하고 있는게 아닐까 하는 생각입니다.(영상 관련일을 했었습니다) 부연설명을 해야하는게 많아서 글에 두서가 없는 점 죄송하며, 긴 글 읽어주셔서 감사합니다. 세줄요약 1. 취준생으로써 어느정도 실력이 쌓인 상태 (3년 정도 공부, 군복무 포함, 코테 플4) 2. 그래도 학사가 필요하지 않을까 하는 마음 3. 우선 취업하고 경력을 인정 받는 시기에 학사따기 vs 나이가 어리니깐 일단 아무곳이나 대학가보고 아니면 자퇴하거나 계속해서 학사따고 취업 (경제적 형편이 안 좋다는 문제가 있음) 마지막으로, 솔직히 아무곳이나 가더라도 4년 동안 다니면서 학사를 딸 용기가 없어서 반년내로 자퇴할 거 같은 느낌인데 이게 착각이 아닐까 하는 마음입니다, 그리고 뜬금없지만, 매칭 시스템을 구현하기 위해서 다익스트라 알고리즘 대신 가독성과 확장성 측면에서 더 좋은 코사인 유사도를 사용하거나 아호코라식 알고리즘이나 엘라스틱 서치를 쓸려다가 오버 엔지니어링 느낌이 들어서 Spring Data JPA Specification으로 해결하거나 조회수 중복을 막기 위해서 유저의 ip 주소를 redis에 저장하고 ttl 으로 자동으로 초기화하거나 n + 1 문제를 해결하기 위해서 fetch join에서 EntityGraph로 해결하고 동시성 문제도 AOP를 사용해서 해결하는 등 책을 통해서 또는 직접 찾아보고 해결하는 과정이 즐거운데 이게 틀린길인가 싶으니깐 슬픈 거 같습니다..
개발자
#학사
#취업
#개발공부
#대학교
#취준고민
답변 1
댓글 1
조회 156
7달 전 · 상현 님의 새로운 답변
next14의 next/headers의 cookies를 이용한 쿠키설정
안녕하세요 현재 데이터시각화 사이트 프로젝트를 진행중입니다. next14와 spring boot(리소스와 인증.인가)를 사용하고 있고, 카카오 소셜로그인을 하면 스프링서버에서 jwt(access 토큰)를 발급해주고 refresh 토큰은 redis를 통해 관리되고 있습니다. 받아온 토큰은 cookie를 통해 관리하고 있습니다. seo를 위해 ssr을 사용하고 있는데, ssr과정에서 데이터를 fetch를 할 때 토큰을 같이 보내고, 만약 액세스 토큰이 만료되고 리프레시 토큰이 살아있다면 응답 헤더에 새로운 액세스토큰을 보내주고 있습니다. 그런데 이때 next/headers의 cookies를 사용하여 쿠키를 세팅하는것이 안됩니다. 데이터 페치중, 혹은 ssr과정중에는 Cookies can only be modified in a Server Action or Route Handler. 라는 오류가 뜨며 cookie를 set 하거나 delete하는게 안됩니다. 이럴 경우는 어떻게 해야할까요?
개발자
#next.js
#cookie
#jwt토큰
답변 1
댓글 0
조회 150
7달 전 · 프레드윰 님의 새로운 답변
중국 유학생이 한국에서 Java 개발 직업을 찾으려면 어떻게 해야 하나요?
안녕하세요, 저는 중국에서 온 유학생입니다. 25년 2월에 졸업 예정입니다. 한국에서 Java 백엔드 개발자 직업을 찾고 싶습니다. 현재 개인적으로 진행한 프로젝트가 두 가지 있습니다. 프로젝트 1: Hash 해시 알고리즘을 기반으로 한 데이터베이스 라우팅 컴포넌트 프로젝트. 사용한 기술 스택: Springboot, MySQL, ThreadLocal, Mybatis, AOP 어노테이션. 프로젝트 2: 커뮤니케이션 플랫폼 시스템. 사용한 기술 스택: Springboot, Redis, Kafka, MySQL, ElasticSearch, Spring Security. 이 프로젝트들이 한국의 Java 개발 직무와 부합할까요?
개발자
#java
#springboot
#kafka
#신입-개발자
#개발자
답변 1
댓글 0
조회 82
7달 전 · 익명 님의 질문
게시글 조회수 증가 방법에 대한 고민
안녕하세요! 커뮤니티 서비스를 개발하면서 조회수 증가에 대한 로직에 대한 고민이 생겨 이렇게 글을 작성하게 되었습니다. 현재 Redis를 활용하여 게시글 조회에 대한 카운팅을 수행하고 이를 일정 주기마다 DB에 반영하도록 했는데 이렇게 되면 조회수를 실시간적으로 사용자에게 보여주지 못하는 구멍이 생겨 이를 보완하고자 다음 두가지 방법을 고려해봤습니다. 1. 현재 설정한 주기보다 더 빠르게 반영하도록 해서 비교적 실시간과 가까운 결과를 반영한다. 2. 게시글 조회수에 대한 정보가 필요할 때 마다 Redis에 저장된 카운팅을 가져와 이를 더한 값을 반환해준다. 입니다. 개인적으론 조회수가 정말 실시간성이 필요한 부분인가에 대한 고민도 있고, 현업에서는 이와 같은 부분들을 어떻게 해결해나가는지 궁금하기도 합니다!! 마지막으로 긴 글 읽어주셔서 감사합니다 😀
개발자
#백엔드
#개발고민
#redis
#db
답변 0
댓글 0
조회 83
8달 전 · 오두호 님의 질문
신입 백엔드 개발자 이력서 질문 및 피드백 요청드립니다!
백엔드 개발자로 근무하길 희망하는 취업준비생입니다! 이력서 작성에 왕도는 없겠지만, 선배님들이 어떻게 작성했는지 혹은 채용자 입장에서 괜찮은 이력서를 찾는 기준이 무엇인지를 많이 찾아보다보니까 오히려 머리가 복잡해지는 것 같아서 최대한 제 얘기를 담은 이력서를 작성하려고 노력중입니다. 다만, 제가 작성하는 방법이 채용자가 원하는 방법이 아닐 수 있기에 몇가지 질문과 가능하시다면 피드백 해주실 수 있는 선배님들이 계실까 해서 글 남겨봅니다. Q1. 이력서 내 프로젝트에서 기여 혹은 개선사항을 작성할 때 사용한 기술을 상세히 적으며 풀어나가는 것이 좋을까요 혹은 어떤 점을 어떻게 개선했는지 포괄적으로 작성하는게 좋을까요? ex) 사용자 인증 정보를 RedisTemplate의 opsForValue 메소드를 통해 캐싱하여 DB 호출 횟수 4회 -> 1회로 최적화 vs Redis를 활용한 사용자 인증 정보 캐싱으로 DB 호출 횟수 4회 -> 1회로 최적화 (적절한 예시일지 모르겠지만 생각나는대로 적어봤습니다,,ㅎ) Q2. 직무와 연관되지 않았지만 활용될만한 기술스택은 작성하는 것이 좋을까요 아니면 제외해도 괜찮을까요? ex)Scrapy, Selenium등의 크롤링 툴, 프론트엔드 기술 Q3. 이력서 외에 자기소개서 내용에서 기술적인 얘기를 많이 담는 것이 좋을지 항목에 맞는 에피소드로 자신을 드러내는 것이 좋을지 궁금합니다! (자기소개서를 읽는 채용자는 기술에 대해 자세히 모를 수 있다는 얘기도 들어봐서 고민되는 부분입니다. 1번 질문의 의도와 비슷한 내용일 것 같네요.) 이외에도 혹시 개인적으로 피드백 해주실 수 있는 분이 계시다면, 이력서 공유 해드리도록 하겠습니다! 요즘 힘든 시간을 보내고 있는데 도움 주실 수 있으시다면 정말 감사할 것 같습니다. https://drive.google.com/file/d/1LFqNNNQ3skF26xInwbYzxjZOGIlzE0lQ/view?usp=drive_link 링크 첨부를 했는데 반영이 안돼서 다시 질문 드립니다..! 감사합니다!
개발자
#개발자
#취업고민
#취업
#취업준비생
#백엔드
답변 0
댓글 0
보충이 필요해요 1
조회 208
8달 전 · aigoia 님의 답변 업데이트
신입 백엔드 개발자 이력서 관련 질문
백엔드 개발자로 근무하길 희망하는 취업준비생입니다! 이력서 작성에 왕도는 없겠지만, 선배님들이 어떻게 작성했는지 혹은 채용자 입장에서 괜찮은 이력서를 찾는 기준이 무엇인지를 많이 찾아보다보니까 오히려 머리가 복잡해지는 것 같아서 최대한 제 얘기를 담은 이력서를 작성하려고 노력중입니다. 다만, 제가 작성하는 방법이 채용자가 원하는 방법이 아닐 수 있기에 몇가지 질문과 가능하시다면 피드백 해주실 수 있는 선배님들이 계실까 해서 글 남겨봅니다. Q1. 이력서 내 프로젝트에서 기여 혹은 개선사항을 작성할 때 사용한 기술을 상세히 적으며 풀어나가는 것이 좋을까요 혹은 어떤 점을 어떻게 개선했는지 포괄적으로 작성하는게 좋을까요? ex) 사용자 인증 정보를 RedisTemplate의 opsForValue 메소드를 통해 캐싱하여 DB 호출 횟수 4회 -> 1회로 최적화 vs Redis를 활용한 사용자 인증 정보 캐싱으로 DB 호출 횟수 4회 -> 1회로 최적화 (적절한 예시일지 모르겠지만 생각나는대로 적어봤습니다,,ㅎ) Q2. 직무와 연관되지 않았지만 활용될만한 기술스택은 작성하는 것이 좋을까요 아니면 제외해도 괜찮을까요? ex)Scrapy, Selenium등의 크롤링 툴, 프론트엔드 기술 Q3. 이력서 외에 자기소개서 내용에서 기술적인 얘기를 많이 담는 것이 좋을지 항목에 맞는 에피소드로 자신을 드러내는 것이 좋을지 궁금합니다! (자기소개서를 읽는 채용자는 기술에 대해 자세히 모를 수 있다는 얘기도 들어봐서 고민되는 부분입니다. 1번 질문의 의도와 비슷한 내용일 것 같네요.) 이외에도 혹시 개인적으로 피드백 해주실 수 있는 분이 계시다면, 이력서 공유 해드리도록 하겠습니다! 요즘 힘든 시간을 보내고 있는데 도움 주실 수 있으시다면 정말 감사할 것 같습니다. 감사합니다!
개발자
#취업
#백엔드
#개발자
#고민
#취업고민
답변 1
댓글 0
조회 119
8달 전 · 프레드윰 님의 새로운 답변
기술 스택이 진짜 난잡하게 됬는데 이럴땐 어떻게 해야될까요...
저는 8년차 개발자 입니다. 첫회사에서 7년 다음 회사에서 1년의 경력을 가지고 있습니다. 첫회사에서 Spring Framework를 다뤘구요, 웹팀에서 화면 구현에 더 중점을 두고 개발을 하느라 제품에 사용된 spring기술을 전부 파악하니깐 5년차가 되어있었습니다. 그때쯤 되니깐 팀장부터 말단 직원까지 저한테 다 물어보러 오더라구요... 그래서 더이상 성장을 못한다고 판단하고 혼자서 SpringBoot로 이것저것 만들어보고 python도 배우고 node.js도 배워보고 React.js도 배워보고 그러면서 지냈습니다. 그러다가 이직 제안을 받게 되어서 바로 이직하게 되었어요. 두번째 회사는 클라우드, AI 등 최신기술을 사용하는 스타트업 회사였어요. 여기서 내부 서비스를 유지보수하면서 지내다가 회사에 돈이 없어서 SI 프로젝트를 몇개 진행하게 되었는데 제가 총괄을 맡아서 시스템설계, DB 설계, React.js, Flask 전부다 맡아서 진행하게 되었습니다. 이 프로젝트 진행하면서 AWS 서비스를 직접 구축하게 되었는데 그제야 진짜 성장한다고 느껴졌습니다. (VPC, LB, EC2, S3, Amplify, API Gateway 등등등) 직접 하나하나 구축하면서 클라우드서비스 파악도 되고 참 뿌듯했습니다. DB는 왠만한 RDBMS는 다 다뤄본거 같습니다. Mysql/MariaDB, 오라클, PostgreSQL, Cubrid, MS-SQL 까지요 근데 이 DB들 설치하고 쿼리 날려본게 큰 장점은 또 아닌 거 같고.. 그리고 impala, Redis, Elastic Search, InfluxDB 도 해봤구요... 그리고 DB 테이블 설계하고 쿼리 튜닝하는것도 할수는 있는데 이건뭐 짬차면 다 할 줄 아는거라 메리트도 없구요. 이렇다보니 뭐 하나 잘한다는 느낌이 안듦니다... 뭔가 할줄 아는건 많은데 알맹이가 빠져있는 느낌이에요.. 몇군데서 불합격통보를 받으니 좀 답답하네요
개발자
#커리어
#물경력
답변 1
댓글 0
조회 174
9달 전 · 장성호 님의 새로운 답변
백엔드 독학 커리큘럼 고민
안녕하세요 컴공과 4년제 졸업생 백엔드 개발자 희망하는 취준생입니다. 제로베이스 부트캠프와 독학 고민하다 독학을 해볼까 커리큘럼 계획 중인데 고민이 있어 글 작성 합니다. 1. 자바 언어(이것이 자바다 책), 코딩테스트(자바), CS지식(큰돌님 강의) 2. 김영한님 스프링 로드맵(기본 - mvc - db - jpa - 고급), 스프링 시큐리티(정수원님 강의) 추가적으로 상황이 된다면 redis, Jenkins, AWS 배포, 코드 리팩토링 등 이 순서로 공부를하면서 준비하려하는데 불 필요한 부분이 있다, 부트캠프가 더 효율적이다 등 다양한 조언 부탁드립니다..!! 카톡으로 조언해주셔도 좋습니다..! https://open.kakao.com/o/snOaa5wg
개발자
#spring
#취업
#백엔드
답변 2
댓글 1
추천해요 1
조회 651
10달 전 · 신예찬 님의 새로운 댓글
RCE 보안공격 질문입니다!
안녕하세요 백엔드 취업 준비생입니다 최근 프로젝트를 진행중에 배포서버를 구성해봤습니다 aws ec2에 docker compose로 nginx, WAS, redis를 컨테이너화해 동작시키고, nginx에 의해 3개의 WAS가 로드밸런싱 된 상태입니다(WAS 는 sping boot+spring security+JPA를 사용중입니다) route 53으로 Gabia에서 구매한 도메인을 연결해둬 도메인 접근을 허용해둔 상태입니다 배포 서버가 정상적으로 동작하는지 확인하기 위해 log를 보고 있었는데 이상한 요청이 보였습니다 요청 url에 `chmod 777`이라던지 `rm -rf`가 보여서 식겁해서 일단 서버는 내려뒀습니다 알아보니 RCE라는 공격 방식 같더라고요 그래서 RCE를 막는 최선의 방법이 무엇인지 궁금합니다 또 통상적으로 알고있으면 좋은 보안 방어 기법에는 어떤것들이 있을지 궁금합니다! (가능하면 AWS 과금이 없는방법이면 더 좋을거같아요 😊 😊)
개발자
#nginx
#security
#springboot
#aws-ec2
답변 1
댓글 1
조회 83
일 년 전 · Jeahong 님의 새로운 답변
redis 연결 이슈 입니다!! 제발 도와주세요 ㅠㅠ
문제는 이렇습니다. prodRedisUrl = redis://:password@ec2프라이빗ip:6379/0로 url을 보냅니다. 그리고 ec2 내 redis bind를 ec2 프라이빗 Ip로 설정하고, 리스닝 하고 있는 상태입니다. 그러면 정상적이라면, 서버가 배포 됐을 때 prodRedisUrl로 redis와의 연결이 성공적으로 연결 됩니다. 근데 어이없는 문제가 발생합니다. 요청하지도 않은 localhost로 redis서버에 연결하려고 하는 것입니다. 그래서 시나리오를 세워서 반대로 테스트를 해봤습니다 !!!! prodRedisUrl = redis://:password@127.0.0.1:6379/0로 하고, 일부러 로컬호스트를 보내 봤습니다. 물론 ec2 내 redis.conf의 bind를 수정 했습니다. bind 127.0.0.1 테스트 해봤더니 127.0.0.1로 접속은 완료 됐지만 이제는 반대로 ec2 프라이빗 Ip로 연결을 요청해서 실패하네요 ㅋㅋㅋㅋㅋ ---- === 도대체 요청하지도 않은 ec2에서 그리고 알지도 못하는 프라이빗 ip로 redis서버에 접속하려는걸까요?????? ----------------------------------------- 즉, 정리하자면 요청하지도 않은 host로 Redis서버에 접속한다 !! 입니다. 로컬에서 테스트 할 때는 아무런 문제 없이 잘 작동하더니만 ec2에 배포하고 연결하려고 하니까 이 말썽입니다... 도저히 이해가 되지도 않고 원인 파악도 힘드네요,, 고수님들의 도움이 정말 필요합니다.. 부탁드립니다 ㅠㅠ
개발자
#redis
#nest.js
#node.js
답변 1
댓글 0
조회 121
3달 전 · 문석 님의 새로운 답변
docker-compose를 통해 redis와 boot연결 중 생기는 오류
안녕하세요 백엔드 개발자를 준비중인 대학생입니다. 현재 자바, 스프링부트로, 인텔리제이로 백엔드 개발을 하고 있습니다.(jdk 17) 이번에 프로젝트 중 도커에 대해서 필요성을 느껴 도커를 연결 중에 있습니다. 현재 상황이 db, redis, boot를 docker-compose에 올려서 실행했는데 3개 모두 다 실행은 된 상태입니다.!!!!! db와 boot는 연결이 가능하지만 boot와 redis 연결 중 오류가 뜹니다. 보이는 주 오류는 아래의 2개와 같습니다. org.springframework.data.redis.RedisConnectionFailureException: Unable to connect to Redis Caused by: io.netty.channel.AbstractChannel$AnnotatedConnectException: Connection refused: localhost/127.0.0.1:6379 redis를 직접 실행해보니 localhost로는 정상적으로 실행이 되어 돌아가는데!!!!!!!!!!!!!!! host에 docker-compose에 적은 컨테이너 설정 이름인 redis를 입력하니 위와 같은 오류가 나타납니다.!!!!!!!!! 왜 2번째 오류 문구처럼 Connection refused: localhost/127.0.0.1:6379 라고 뜨는지도 이해가 안가고 구글링을 통해서 계속 찾아봐도 미칠지경까지 와버렸습니다.. 며칠째 이것때매 다른 것을 못하는 상황입니다 ㅜ 아래에 전체적인 코드를 남기겠습니다. 도와주세요!!!!! 제발요... 코드는 redis연결만 문제가 있어 다른 그 부분만 올렸습니다.
개발자
#백엔드
#도커
#redis
#spring
#오류
답변 3
댓글 0
조회 513
일 년 전 · 장성호 님의 새로운 댓글
토큰 기반 인증에서 리프레쉬 토큰 관리
JWT로 토큰 기반 인증을 구현할 때 궁금한게 좀 생겼습니다! 리프레쉬 토큰은 DB에 저장해볼까 했는데 그러면 토큰 기반 인증이 아니라 세션 기반 인증인 것 같아서 고민입니다. DB에 저장하는 순간 Stateless 장점도 없어지는 것 같구… Stateless로 구현한다해도 로그아웃 때문에 블랙리스트 관리해야한다는데, 이러면 결국 Stateful인거 같구… 다른 분들은 어떻게 구현하시는지 궁금합니다! 일단 이렇게 고민해봤습니다. --- <1번 시나리오 - 리프레쉬 토큰을 DB에 저장하지 않는 시나리오> 1. 액세스 토큰이랑 리프레쉬 토큰은 클라이언트가 저장하고 서버는 저장하지 않는다. 2. 클라이언트 요청이 왔을 때 리프레쉬 토큰이 만료되지 않았으면 액세스 토큰을 발급해주고, 만료됐으면 액세스 토큰을 발급해주지 않는다. (401 또는 403) 장점 - DB에 접근할 이유가 없으므로 Stateless 하다. 단점 - 로그아웃을 했을 때 토큰 자체는 무효화시킬 수 있는 방법이 없다. <2번 시나리오 - 리프레쉬 토큰을 DB에 저장하는 시나리오> 1. 액세스 토큰이랑 리프레쉬 토큰은 클라이언트와 서버가 각각 저장한다. 2. 클라이언트 요청이 왔을 때 리프레쉬 토큰이 만료되지 않았으면 액세스 토큰을 발급해주고, 만료됐으면 액세스 토큰을 발급해주지 않는다. (401 또는 403) 장점 - 로그아웃을 했을 때 토큰 자체는 무효화시킬 수 있다. 단점 - DB를 접근해야하므로 Stateful 하다. => 클러스터링이나 샤딩이 도입되면 복잡도가 올라간다. --- 1번 시나리오 단점을 극복하려고 블랙 리스트를 Redis에 관리한다는 글들을 종종 봤습니다. 블랙 리스트를 도입 안했을 때 문제는 실제로 겪어본 적이 있어서 공감은 가는데, 이러면 사실상 세션 쓰는거랑 똑같지 않나라는 생각이 듭니다. 인증시 결국 Redis 같은 DB에 접근해서 직접 확인하는 거니까요. 한편으로는 서비스가 매우 많이 커지면 세션이 부담돼서 토큰 기반 인증으로 전환한다는데, 파면 팔수록 점점 세션 기반 인증으로 바뀌는 것 같아서 고민입니다.
개발자
#인증
#토큰
#db
#stateless
#stateful
답변 1
댓글 1
조회 159
일 년 전 · 김도원 님의 답변 업데이트
퇴사한지 반년 넘은 3년차 java 개발자 입니다..
전 회사에서 크롤링으로 혹사당한 후 대상포진까지 걸리고 더는 안되겠다 싶어 퇴사하고 3개월정도 휴식기를 가지고 3개월째 준비하고 있습니다. 총 반년.. 사이드프로젝트도 계속 만들고 있는데 어디까지 손봐야 하는지 감이 잡히지 않습니다.. 코딩테스트는 사실상 준비하지 않아서 과제테스트를 보는 곳으로 생각하고 있는데 3년차로 들어가게 된다면 어떤 것을 해야하는지 혼란합니다. 현재는 spring security, jwt, oauth2 를 이용해 로그인 기능을 구현해 놓은 상태에 docker, aws, jenkins를 이용해 서버에 올리는 정도까지만 진행한 상태입니다.. 찾아보니 redis, kafka 같은 것들도 해야 할 것만 같은데 시간이 없는 상태에서 진행하는게 맞을까요? 테스트코드도 습관이 되어 있지 않아서 혼자서 작성하려니 너무 벅찬 느낌이 듭니다.. 현재하고 있는 것에서 마무리하고 구직을 해도 상관없을지, 더 배우고 채워야 할지 모르겠습니다,,
개발자
#이직
#java
#백앤드
#3년차
답변 5
댓글 6
추천해요 10
조회 3,616
일 년 전 · 삭제된 사용자 님의 새로운 댓글
신고 게시글 안 보이도록 하는 기능 질문드립니다
안녕하세요! 현재 진행 중인 사이드 프로젝트에서 게시글 신고 기능을 구현하고 있습니다. 1. 게시글이 누적 신고를 받으면 모든 유저한테 안 보입니다. 2. 유저가 특정 게시글을 신고했을 때 해당 유저한테는 신고한 게시글이 안 보입니다. 1번의 경우에는 신고가 될 때마다 count를 해서 일정 횟수 누적이 되면 해당 게시글을 soft delete를 합니다. 2번의 경우에는 게시글 조회 시 신고 테이블을 outer join 해서 해당 유저가 신고하지 않은 게시글만 조회합니다. 신고 특성상 순간적으로 발생하는 경우가 많을 것 같아서 redis를 사용해볼까 하는 생각도 드는데 조언, 피드백 좀 주시면 정말 감사하겠습니다!
개발자
#spring
#jpa
#mysql
답변 1
댓글 1
조회 106
일 년 전 · 익명 님의 질문 업데이트
MSA 환경에서 ABAC 기반의 권한시스템을 어떻게 구현하는게 좋을까요?
안녕하세요 현재 진행중인 프로젝트에 MSA를 적용하여 구현하고 있는 백엔드 꿈나무입니다. 빈번하게 일어나는 권한 검증을 효율적이고 높은 가용성을 확보할 수 있도록 하기 위해서 여러 방법을 모색하던 중, 다른 분들의 의견이 어떨지 하여 QnA를 올려보게 되었습니다. 우선 저희 프로젝트는 User, Device, Organization, Team, License 이렇게 5가지 개념이 있습니다. 사용자가 장비에 접근할 때에는 본인이 소속된 Org에 해당 장비가 존재하는지, 접근하는 동작에 대해서 해당 org가 License를 보유하고 있는지, 소속된 팀 또는 본인에게 해당 장비에 해당 동작을 승인받았는지 등 수많은 조건들에 의해 ABAC가 계산되게 됩니다. 하지만 MSA 환경으로 인해 테이블을 쉽게 join하지 못할 뿐더러, 가능하더라도 상당한 고부하 작업이 될 것이라고 생각합니다. 그래서 CQRS 패턴을 이용해서 license가 만료되거나 팀의 권한이 수정되는 등, 사용자와 장비간의 권한이 수정이 되는 command가 수신되면, 그것을 권한 담당 서비스에 비동기로 전달하여 특정 사용자가 특정 장비에 어떤 동작에 대한 제어가 가능한지를 저장(캐싱)하고 있다가 권한을 검사해야되면 간단하게 query하는 형태로 구현하는 것이 적합할 것이라고 판단했습니다. 이 패턴을 구현하기 위한 두가지 방법을 고안해보았습니다. [Permission Service] 별도의 permission 서비스를 만들고 캐시용도로 redis를 연결해두고, 권한 검사 요청이 들어왔을 때 Cache Miss가 된다면 Api Gateway 패턴과 유사하게 여러 서비스에 각각 정보를 요청하여 최종적인 권한 정보를 Aggregate 하여 전달하고, 캐시에 보관하는 방식입니다 [권한 관리 Infra Service] Google의 Zanzibar와 같이 권한을 관리하고 복잡한 쿼리를 처리해주는 서비스를 이용하는 방식입니다. 오픈소스로 구현된 SpiceDB를 고려하고 있습니다. Permission Service를 만드는 경우, 본인이 보유한 정보가 부족할 경우 능동적으로 정보를 Pull하여 권한 정보를 가져오는 반면, 양측에 별도 인터페이스를 구현해야되는 단점이 있고, 이미 있는 서비스를 사용하면 구현이 쉬워지는 반면, 해당 서비스에서 능동적인 Pull이 불가능하고, 권한 Query 정보가 최신인지 판단하고 업데이트하는 것을 각 서비스에서 각각 담당해야되기 때문에 별도 서비스를 분리하는 것에 비해 Responsibility Segregation이 부족하다고도 느꼈습니다. 무엇보다 관리해야될 인프라 요소가 늘어난 것은 덤이구요. 규모에 비해서 과한 고민을 하고 있는것이 아닌가 하는 생각도 들고, 그래도 더 나은 방법으로 서비스를 만들어가고 싶기도 합니다. ABAC를 적용하는 대부분의 서비스에서 이러한 고민을 적절히 잘 해결하여 서비스가 되고 있을텐데, 정답은 없겠지만 선배님들의 조언을 듣고 싶습니다!
개발자
#msa
#cqrs
답변 0
댓글 0
추천해요 2
조회 125
일 년 전 · 조용구 님의 새로운 답변
JWT 로그아웃 관련 질문 입니다.
JWT 를 사용하여 로그인 기능을 구현 하였습니다. 저같은 경우에는 로그인시 에세스토큰과 리플레시 토큰을 생성해서 사용중이 mysql 테이블에 저장을하고 토큰 두개를 반환하면 프론트(리엑트) 에서 세션 스토리지에 저장해서 에세스 토큰으로 통신하다가 만료가 되면 리플레시를 요청하고 리플레시를 보내서 데이터베이스에서 유효시간과 변형이 되지 않은것을 확인하면 다시 에세스 토큰을 발급하는 시스템으로 구현을 했는데요 이때 에세스 토큰은 30분 리플레시 토큰은 8시간을 주고 개발 하였습니다. 그런데 생각해보니 로그아웃을 구현 안했더라고요 프론트에서는 로그아웃하면 세션스토리지를 날려버리면 끝인데 RestAPI라 데이터만 주고 받으면 되는 형식이라 딱이 제가 받는게 없다는겨죠 그렇게 로그아웃을 찾아 보다가 다른분들은 Redis를 사용하여 리플레시 토큰을 입력받은 아이디를 key로 저장한후에 에세스를 발급하고 로그아웃하면 그토큰을 블랙리스트로 만들더군요 만료시간후에 자동 삭제되게 설정도 하는거 같아요 이게 어느 방향으로 개발하는게 맞는지 도통 모르겠습니다. 로그아웃 할때마다 리플레시를 무효화 시키고 로그인할 때 새로 생성해서 저장하는게 맞는지 로그아웃해도 데이터베이스에 리플레시 유효기간이 남아 있다면 그것을 계속 사용하는게 맞는건지 어느 글들을 보면 리플레시를 7일 한달도 주는 경우가 있더라구요... 그래서 잘 모르겠습니다. 로그인 -> 에세스,리플레시토큰 발급 -> 프론트 세션스토리지 저장 -> 에세스로 통신 -> 만료되면 리플레시 요청 -> 프론트에서 리플레시 통신 -> 데이터 베이스 확인후 유효검사후 에세스 다시 발급 -> 재로그인시 유효시간이 남으면 기존의 리플레시 토큰 사용 로그인 -> 에세스,리플레시토큰 발급 -> ........ -> 로그아웃시 Redis에 블랙리스트로 저장 -> 블랙리스트 접근불가 -> 다시로그인시 리플레시 새로발급 실무에서는 어떻게들 관리하시는지 알려주시면 감사하겠습니다.
개발자
#jwt
#로그아웃
#redis
답변 1
댓글 0
추천해요 1
조회 363
일 년 전 · 이창민 님의 새로운 댓글
JWT vs 세션 사용
안녕하세요, 프로젝트를 진행하던 중에 JWT와 세션 사용에 대한 선택을 결정해야 했는데요. 일단, 클라이언트의 상태를 stateless하게 관리하고 서버의 부하를 줄이기 위한 선택으로 jwt를 도입하게 되었습니다. 근데 문득 궁금점이 생기더라구요. 1. jwt 토큰의 refresh 토큰 관리, logout 등의 기능을 위해 redis를 도입했는데, 세션도 서버의 메모리가 아니라 redis를 사용하게 되면 결국 서버의 부하를 줄여줄 수 있으니, jwt를 굳이 도입하는 이유가 있을까요? 1-1. 스스로 고민해본 결과로는 결국 정보를 jwt 토큰에 저장하느냐, 세션을 사용해서 세션의 정보를 DB에 저장하느냐 그 차이인 것 같은데 맞는지 궁금합니다. 그래서, 결국 redis를 사용하더라도 redis 자체의 부하를 줄여주지 못하는 건가 싶습니다.
개발자
#jwt
#세션
#redis
#인증
#인가
답변 3
댓글 2
추천해요 8
조회 2,244
일 년 전 · 박범수 님의 답변 업데이트
서버 응답속도 성능
Express 기반의 서버를 koyeb에 무료로 배포하여 사용중입니다. 다름이 아니라, 프론트 단에서 서버로부터 요청 후 응답까지의 시간이 너무 길어 개선하려고 하는데 gzip 적용이나 sql 쿼리 수정 등의 작업을 해도 속도가 2초 정도 걸려 질문드립니다. 1. DB 데이터를 redis 서버에 캐시해놓고 사용하면 응답 속도가 개선될까요? 2. 클라우드 무료 성능으로 인한 응답속도 저하일까요? 3. 이 외의 개선 방안이 궁금합니다.
개발자
#클라우드 서버
답변 3
댓글 1
조회 1,154
일 년 전 · 손우진 님의 새로운 답변
nginx를 통해 로드밸런싱하려합니다. 성능과 관련해서 질문있습니다.
springboot 프로젝트를 gcp인스턴스에 docker컨테이너로 배포하려합니다. 웹서버 인스턴스를 따로 둬서 nginx를 설치하고 실행합니다. 문제는 프리티어 gcp라 그런지 springboot 컨테이너를 한 인스턴스에 두 개를 띄우고, 추가로 mariadb와 redis로 컨테이너로 띄워 총 4개의 컨테이너가 실행되는데, 이렇게 하니 인스턴스 접속이 점점 느려지다 어느 순간 멈춰버립니다. 결국 인스턴스를 중단했다가 다시 켜야 다시 원 상태로 돌아옵니다. 물론 해결방법은 구글 클라우드에서 지원하는 cloud storage같이 방법이 있고, 다른 인스턴스를 만들어 로드밸런싱 되는지 확인할 수 있지만,.. 궁금한 게 생겨 확인해봐야할 것 같습니다. 정말 gcp의 프리티어로는 이렇게 여러 컨테이너들을 띄우는 게 어려운 지 궁금합니다.
개발자
#spring-boot
#docker
#nginx
#loadbalance
답변 2
댓글 0
조회 202
일 년 전 · 이승욱 님의 질문 업데이트
Express 백엔드는 취업이 어려운가?
안녕하세요 이제 컴퓨터공학과 막학기 들어서는 주니어 개발자 준비생입니다 연구실 동아리 등등 여러가지 방향으로 전전하다 결국 백엔드 개발자를 목표로 올해부터 공부하기 시작했고, 연구실에서 도커관련된 공부를 했었어서 특이하게 aws와 컨테이너 환경에대해 먼저 공부를하다 올해 7월부터 친구들과 스타트업 같지않는 스타트업에서 리드아닌 리드,백엔드,서버 배포를 맡아 프로젝트를 시작해 Vue express nginx mySQL (+ aws / redis /docker )스택으로 어느정도 공부를 하고있는 상황입니다 처음 프로젝트를 시작할때는 nodejs자체가 처음이라 폐끼치지 않으며 배워야지 하는 마음가짐으로 시작 했는데 (나름) 열심히 한덕에 좀 여유가 생기니 채용 정보를 찾아보기 시작했고 사람인 잡코리아 등등 을 돌아다니다 보니 spring 개발자 채용정보가 거의 대부분인것을 발견했습니다. 그동안 우리나라는 거의 spring이다 말은 많이 들었지만 이정도일줄은 정말 몰랐습니다 프로젝트 배포까지 해보기도 학과생활 열심히한 짬도 있어 다른 언어나 프레임워크를 배우는것에대해 크게 부담은 없지만 express를 계속 고집하는게 맞나 고민이 듭니다,, 질문은 1. express 를 더 깊이있게 배워나갈지 spring이나 모바일 프로그래밍같은 플랫폼을 배울지 고민입니다! 2. Express 프레임워크 자체가 취업에 많이 불리한지 아니면 재가 채용공고를 잘 못찾는 편인지 궁금합니다 3. 저는 정말 개발자로써 배울점이 많은 회사에서 근무하고 싶은데, 이제 막 취업시장에 뛰어들다 보니 그런 견해가 부족한것 같습니다. 혹시 무엇을 참고하고 회사에 대해 판단을 내리면 좋을까요?
개발자
#nodejs
#express
#aws
#취업
#창업
답변 1
댓글 0
조회 290
일 년 전 · 박범수 님의 답변 업데이트
쿠팡 아이폰 사전예약 같이, 특정 시간대에 순간적인 트래픽이 예상된다면 어떤 아키텍처를 가져가는 것이 좋나요?
많은 트래픽을 안정적인 처리를 하기 위해서는 redis를 많이 사용한다고 알고 있습니다. redis의 어떤 점을 활용하는게 좋을까요? 혹은 특정 시간에서만 scale-out이 가능하도록 아키텍처를 설계할 수 있을까요? 많은 트래픽을 경험해보지 못한 뉴비라서 질문드립니다...! (redis 사용 경험도 X)
개발자
#대용량
#트래픽
#redis
#kafka
#대규모
답변 1
댓글 0
조회 161
9달 전 · 오주환 님의 댓글 업데이트
대기업 신입 노드 개발자가 가능한가
안녕하세요. 저는 현재 신입 백엔드 개발자로 취업 준비 중입니다. 사용할 줄 아는 언어는 하나라도 제대로 하자는 마음으로 js/ts만 다뤄왔습니다. 사실 프론트를 먼저 접하고 백엔드의 필요성을 느껴 빠르게 백을 구축하기 위해 nodejs로 백을 시작하게 되었어서 지금까지도 nodejs를 메인으로 expressjs, nestjs 등으로 계속 공부를 하고 있네요. 하지만 휴학 기간 동안 취업 준비를 하기 위해 채용 공고들을 보고 있는데 이름있는 기업들은 거의 대부분 자바 개발자만 뽑더라구요.. 물론 부서마다 언어가 다르다고 하긴 하지만 대부분 자바 아니면 파이썬이 메인이고, 노드는 뒷순위에 경력자들만을 뽑더군요.. 무슨 신입이 처음부터 이름있는 기업에 가려하냐, 눈이 너무 높은거 아니냐 하고 생각하실 수 있지만 제 성격상 목표가 뚜렷해야 집중이 잘 되고, 생각보다 취준 기간이 넉넉하고 네카라쿠배 급 정도에서 요구하는 기술 스택들, 예를 들면 docker, ci/cd, redis, msa, message broker, DDD, TDD, serverless 등을 완벽히 까지는 아니더라도 충분히 시간을 들여 공부하고 이를 사용한 본격적인 프로젝트를 진행하기 전에 언어를 확실히 정하고 가고 싶어서 질문 드립니다. 아직 expressjs, nestjs도 제대로 이해하고 있는 것은 아니며 당연히 배워야할 점들이 수도 없이 많기에, 남은 1년의 기간 동안 노드쪽의 부족한 점을 채워야할지, 자바를 새롭게 배우고 충분히 공부하며 제대로 된 프로젝트를 진행해야 할지 고민입니다. 더불어, 현재 저의 역량을 확인하기 위해 풀스택으로 제대로 된 쇼핑몰을 혼자 전부 구현 및 배포를 하는 프러젝트가 진행 중에 있습니다. 만약 제가 자바를 공부하는 것이 맞다면 현재 진행하고 있는 프로젝트는 잠깐 중단하고, 자바를 충분히 공부한 후 이 프로젝트를 자바로 진행하는 것이 좋을지, 아니면 일단 현재 프로젝트는 완성하고 나중에 자바를 공부한 후 똑같이 만들어보는 것이 나을지 고민입니다. 후자가 맞는거 같지만서도 이 경우에는 시간이 너무 오래 걸릴 것 같아 질문드립니다.. 정리하자면, 배경: 취준 기간 1년이 있고 목표는 대기업 혹은 중견기업 신입이다. expressjs, nestjs를 다룰 줄 알고 현재까지 진행한 토이 프로젝트들을 봤을때 개인적으로 기본적인 부분들은 할 줄 알고 있다고 생각한다. 질문 1. 하지만, 아직 부족한 점이 많은데 남은 1년을 노드쪽을 더 파서 취업을 노릴지, 아니면 이제라도 자바를 공부해서 조금 더 유리하게 가야할지? 질문 2. 내 역량을 확인할 겸 제대로 된 프로젝트를 하고 싶어서 쇼핑몰 구현 중에 있다. 만약 제가 자바를 공부하는 것이 맞다면, 현재 이 프로젝트를 노드로 완성하고, 자바로 옮길지. 아니면, 일단 멈추고 자바를 공부한 후 자바로 처음부터 만들지. (프로젝트는 이제 막 초기 단계라 기본적인 기능만 구현 후 배포 전 ci/cd를 위해 테스트 코드 작성 중에 있습니다.) 충분한 고민을 해보고 질문을 드리는게 맞겠지만 대기업 혹은 중견기업 채용 공고에 노드 백엔드 개발자가 거의 없는걸 보니 조급해져서 이렇게 질문드립니다. 긴 글 읽어주셔서 감사드리고 답변 꼭 부틱드립니다...!
개발자
#java
#javascript
#취업
#spring
#expressjs
답변 3
댓글 3
조회 2,088
일 년 전 · 익명 님의 질문 업데이트
맥북으로 이제 바꿀려는데 고민이 있습니다
백엔드개발자 취준생이고 현재 프로젝트를 할때 보통은 인텔리제이,postman,크롬3,40개 (유튜브),디스코드(화상회의),노션,블로그 정도의 창을 띄우고 datagrip , 도커에 redis 띄우고 작업하는거 같습니다 . 이정도면 32기가로 맥북 사는게 나을려나요? 돈은 300까지는 있는데 무리해서라도 300근처에 사는게 맞는지 궁금합니다.
개발자
#맥북
답변 2
댓글 3
조회 628
일 년 전 · 박하루 님의 새로운 답변
RestController로 구성된 신입 백엔드 포폴 회사 입장에선 과연 어떻게 바라볼까요..?
안녕하세요 저는 일주일 전에 국비 학원을 수료하고 이제 취업 전선에 나가게 된 신입 백엔드 개발자 취준생 입니다. 국비 학원에서 6개월 과정으로 자바와 스프링을 배웠지만 수업이 진행될수록 학원 내에서 수강생들간의 격차가 심해졌고 그 격차가 팀 프로젝트까지 전달되었는데요. 예를 들어 저는 redis 이용한 캐시 적용 , 동시성 제어등 제가 학원외에서도 열심히 익히고 학습한 기술적인 스킬들을 프로젝트를 통해 보여주고 싶었지만 자바에서 어려움을 느끼고 있는 팀원도 있고 다른 팀원들도 공부하기에 벅참을 느끼는 것 같아 기본적인 CRUD에서 조금 더 발전적인 팀 프로젝트를 만들게 되었습니다.(저를 포함한 팀원 모두 비전공자) 저는 프로젝트를 바라보며 매일 공부했던 만큼 기대보다는 개인적인 아쉬움이 남은 프로젝트가 나온 것 같습니다. 그래서 저는 제 기술적인 역량을 보여줄 수 있는 개인 프로젝트를 만들려고 하는데 문제는 제가 프론트쪽이 매우 약하고 개인적으로 공부할 만큼의 시간적 여유도 없어 개인 프로젝트를 RestController로만 구현을 하려고 하는데 과연 프론트단 없이 RestController로만 구성된 개인 프로젝트가 회사 입장에서 어떨지 궁금합니다. 백엔드 포폴이면 최소한만 하면 된다는 말도 들었지만 정확히 최소한이 어느 정도인지도 사실 잘 모르겠습니다 ㅠㅠ RestController로 구성된 신입 백엔드 포폴 회사 입장에선 과연 어떻게 바라볼까요..? (팀 프로젝트는 외부 프론트엔드분을 영입해서 같이 협업하였습니다)
개발자
#java
#spring
답변 2
댓글 0
조회 314
2년 전 · 커리어리 AI 봇 님의 새로운 답변
데이터 수집 시스템 조언 부탁드립니다..
안녕하세요. 현재 데이터분석가 인턴으로 회사에 들어간지가 한달이 조금 넘었습니다. 현재 회사에서 분석이 아닌, 직접 데이터를 수집하는 작업을 하고 있습니다. 제가 분석만 하다보니, 데이터를 수집하고 저장하는 작업을 처음해보고 사수도 따로 없다보니 조언을 구할 곳이 없어서 이렇게 게시물로 조언을 요청드립니다.. 지식이 부족해 다소 어렵게 설명을 드려도 이해 부탁드리며, 제 글을 보고 “저 친구는 왜 저렇게 비효율적으로 하지? 이렇게 하면 좋을텐데”라는 생각이 드신다면 바로 댓글이나 쪽지 부탁드립니다. 제가 처음 올려봐서 쪽지 기능이 있나 모르겠네요.. 먼저, 간단하게 제가 진행하고 있는 데이터 수집 절차를 설명드리겠습니다. 1. 컬럼이 한개인 4GB가 조금 넘는 데이터를 수집 코드에 불러와야 한다. 해당 데이터에는 도메인 주소가 담겨 있다. 2. 내 수집 코드는 불러온 데이터를 한행씩 조회하면서 수집을 진행한다. 3. 한 행에 있는 도메인 주소에 순서대로 http 접속을 해서 해당 도메인 주소가 사전에 설정한 특정 조건을 만족하면, 해당 도메인 주소와 사이트에 접속해서 추출한 정수형 값을 DB에 저장한다. 4. 즉, 4기가의 데이터를 불러와 한 행씩 조회해가면서 실시간으로 데이터를 db에 수집하는 코드다. 5. 24시간 동안 코드를 돌리는 수집 예상 기간은 3개월 정도이다. 다음으로는 조금 구체적인 진행 사항을 말하겠습니다. 밑에서부터 길어지니, 바쁘신 분들은 위에 주요 절차만 보시고 조언 주시면 감사하겠습니다. 1. 파이썬만 사용할 줄 알기 때문에, 파이썬을 사용하여 class로 만들어 수집 코드를 짰다. 2. 데이터의 양이 많아서 메모리 부족 오류가 빈번하게 나타나, 하둡과 아파치 스파크를 이용해봤다. 내가 조회할 데이터 파일을 하둡 HDFS에 업로드 한다음에, 아파치 스파크 클러스터를 구축했다. 그리고, pyspark 모듈을 이용해 파티션을 나눠 데이터를 불러왔다. 파티션으로 받아온 값을 리스트로 변환하여 순서대로 해당 도메인 주소로 접속하는 반복문을 진행하면서 데이터를 수집했다. 즉 파티션으로 데이터를 쪼개서 1번 파티션부터 n번 파티션까지 각각 파티션 내부에 도메인 주소 리스트가 반복문을 진행된다고 보면 된다. 각 파티션이 다른 파티션으로 전환되는 과정도 반복문으로 처리했다. 하나의 파티션 마다 내가 만든 class(도메인 리스트를 인자로 받는다)가 한번씩 실행된다고 보면 된다. 3. 수집 속도가 너무 느려서 class에 있는 수집 메소드를 멀티 스레드 방식을 이용해서 수정해주었다. 수집 속도가 매우 빨라졌다. 4. 기존에는 aws의 클라우드 db(dynamo db)를 사용했지만, 과금 문제로 인해 로컬에 db를 설치하기로 했다. 쓰기 속도가 매우 빠른 redis db를 선택했다 5. 위에서 설명한 반복문을 돌면서 조건에 일치한 도메인 주소와 정수 값은 한 행씩 redis db에 key(도메인주소) value(정수값) 형식으로 저장하도록 코드를 만들었다. 이 과정도 class 내부에 포함되어 있다. 6. redis는 on memory db이기 때문에 대용량 데이터를 영구적으로 저장하고 분석하기에 적합하지 않다고 판단해서 1시간마다 redis에 있는 데이터를 postgresql db로 옮겨주는 코드를 따로 만들었다. postgresql db에 미리 redis에서 옮겨갈 테이블을 생성해두었다. redis의 key였던 도메인 이름을 첫 번째 필드에 프리이머리 키로 저장했고 value인 정수 값을 2번 째 필드에 값으로 넣어줬다. 그리고, 마지막 필드에는 자동으로 데이터가 저장될 때, 현재 시간이 넣어지게 테이블을 만들었다. 총 3개의 열로 구성된 테이블에 1시간에 한번씩 redis에 저장해두었던 데이터가 옮겨간다고 생각하면 된다. 7. 처음 redis에 데이터를 저장할 때 ttl을 설정해서 1시간 10분이 지나면 redis db에서 데이터가 자동으로 소멸되도록 설정했으며, 만약 postgresql에 중복된 데이터가 들어간다면 자동으로 무시하고 다음 작업을 진행하도록 테이블 설정을 해줬다. 즉, 실시간으로 데이터가 수집되고 자동으로 시간이 지나면 데이터가 소멸되는 redis db에서 1시간마다 한번 postgresql로 옮겨주는 코드를 따로 만들었다. 8. 수집 코드를 spark-submit 명령문으로 실행해주었다. spark-submit 명령어 앞에 nohup을 해줘서 백그라운드에서 코드가 실행되게 해줬고, 로그 결과를 따로 파일을 만들어 저장되도록 했다. 그리고 파이썬 실행 파일 내에서도 로그를 입력하는 코드를 만들어서, 도메인의 http 접속이 성공했는지의 여부를 로그 파일에 실시간으로 입력되도록 했다. 예를 들어, http 접속이 잘 된 도메인 주소는 로그에 “INFO 도메인 주소: success” 이렇게 기록하고, 타임아웃 에러, 접속 에러, redirect 오류, db 저장 오류는 모두 종류별로 예외 처리해서 로그에서 기록되도록 코드를 구성했다. 파이썬에서 자체적으로 로그를 기록한 파일은 수집코드를 실행하면서 파티션이 전환될 때마다 하나씩 생성된다. 이제 이렇게 제가 실행할 코드는 24시간 내내 수집을 진행하는 코드 하나와 1시간에 한번 데이터를 옮겨주는 스케줄러 코드로 총 2개가 됩니다. 저는 이 코드와 수집 환경을 만들기 위해 모두 도커를 활용하였으며, 사용한 컨테이너와 부가 설명은 다음과 같습니다. spark-master: 하둡과 스파크 클러스터를 구축하는 컨테이너로 standalone모드로 spark-summit 명령어로 파이썬 파일을 실행해주었다. --conf 옵션으로 메모리, 하트비트 간격, 파티션 수 를 지정해주었다. 스파크와 하둡을 처음 사용해봐서 약간의 개념만 있는 상태에서 돌려보니 아직도 세부 설정을 제대로 이해하지 못했다. 결국 worker를 1개 생성해서 파이썬 파일을 처리하도록 하였다. 현재 대다수의 오류가 이 컨테이너에서 발생한다. redis: spark-master에서 실시간으로 실행되고 있는 수집 코드에서 선별된 데이터들이 redis 컨테이너에 있는 redis db에 저장된다. postgresql: 1시간에 한번 redis에 있는 데이터를 옮기기 위해 postgresql 컨테이너를 생성했다. schduler: 1시간에 한번 postgresql 컨테이너에서 작동하고 있는 postgresql db에 redis 데이터를 옮겨주기 위한 스캐줄러 코드를 실행할 컨테이너다. redis-monitor: 실시간으로 redis db를 모니터링 하기 위해 redis-monitor 컨테이너를 생성하여 웹에서 모니터링 툴인 Redis-Stat에 접속한다. postgre-monitor: 마찬가지로, 실시간으로 postgresql db를 모니터링 하기 위해 생성한 컨테이너로 웹에서 Pgadmin4를 사용할 수 있다. 이렇게 총 6개의 컨테이너를 생성하여 내 수집 코드를 실행했는데, 여기서 많은 문제가 발생했습니다. 제가 가진 의문과 문제를 나열하자면 다음과 같습니다. 1. 먼저, 수집 코드를 실행한 다음에 스케줄러 코드를 실행해주었는데, (서로 독립된 컨테이너에서 실행) 두 코드가 DB에 동시에 접속할 때, 충돌이 일어날 가능성이 있지 않을까? 2. 수집 코드를 실행하고 몇분이 지나면 터미널이 먹통이 되고, 코드가 더 이상 실행이 안되는 일이 빈번하게 발생한다. 너무 많은 자원을 사용하고 있어서 그런건가.. 컴퓨터 사양이 안좋아서 그런건가 원인을 잘 모르겠다.. 3. spark-submit 로그를 보면 내 노트북에서는 안그러는데, 대용량 파일을 불러오는 과정에서 파티션 별로 데이터를 정리할 때 오류가 빈번하게 발생한다 . executor가 통신이 안된다는 경고 메세지도 자주 나오고, 특히, Remote RPC client disassociated 라는 오류가 가장 많이 나온다. 내 컴퓨터보다 높은 사양의 클러스터를 구축하려고 해서 그런가. 검색해보니 네트워크 문제이거나, 컨테이너에 할당한 자원을 초과해서 그런거라고 한다. 대용량 데이터를 불러오는 다른 방법을 강구해봐야되나 고민하고 있다. “그래서 요점이 뭐야” 라고 물어보신다면, 저는 현직에서 활동하고 계신 데이터 엔지니어, 백앤드 개발자 분들이 제 글을 본다면 “아니 굳이 왜 그렇게 하지? 이렇게 쉬운 방법이 있는데” 또는 “저기서 이렇게도 해봤나?, 이러면 안정적으로 코드를 돌릴 수 있을텐데”라는 반응으로 갈릴 것 같다고 생각합니다.
개발자
#데이터베이스
#데이터수집
#아파치스파크
#redis
#python
답변 2
댓글 0
추천해요 7
조회 884
일 년 전 · 김규혁 님의 질문 업데이트
맥북M1 embedded redis 적용질문
안녕하세요 spring 에 대해 공부 중인 취준생입니다 M1 을 사용중인데 계속 에러가 발생해서 찾아보니 embedded 는 m1 이 지원이 안된다고 하더라구요 https://da-nyee.github.io/posts/how-to-use-embedded-redis-on-m1-arm/ 이 링크 방법대로 진행하면 가능하다고 하는데 마지막에 나와있는 EmbeddedRedisConfiguration 부분이 잘 이해가 가지 않습니다.. 코드를 그냥 복붙하자니 에러뜨는 부분 전부 import 를 해도 에러가 발생하고 도저히 뭐가뭔지 모르겠네요… 혹시 최대한 간단하게 해결방법 좀 알려주실 수 있으신분 계실까요… 이것만 며칠을 붙잡고 있더니 멘탈이 너덜너덜해지네요.. 콘솔에는 Suspect RAM error? Use redis-server —test-memory to verify it. 라고 나옵니다
개발자
#java
#spring
답변 1
댓글 0
조회 368
3년 전 · 김형준 님의 새로운 답변
랭킹 시스템 자료구조 짜기
안녕하세요, redis의 캐싱 관련해서 친구가 이것저것 얘기해주다가 저한테 미션을 하나 주더라고요. 1. 유저가 N명이 있고, 총 5명의 랭킹이 보여야한다. 2. 실시간으로 유저들의 score가 바뀐다. 친구는 redis의 Sorted set에 대해 이미 공부를 하고 저한테 물은 상태였습니다. Sorted set은 insert가 O(log N)이더라고요. 저는 고민하다가 1. hash map을 통해 userID와 score를 저장 2. 랭킹 5명은 따로 배열을 만든다. [ID, score] 3. 값이 바뀔 때 5명 중 최약체의 score보다 바뀐 값이 크다면 갈아치우는 형태를 얘기했습니다. 제 방식에 의하면 insert는 O(1)이고, 5명에 대한 값 변동 처리는 어차피 5명이니까 O(5^2)를 줘도 사실 O(1)이라 봐도 무방합니다. 저는 제 방식이 더 효율적인 것 같은데 어떻게 생각하시나요?
개발자
#자료구조
답변 2
댓글 0
추천해요 2
조회 456
3년 전 · 지찬규 (피트웨어 제이) 님의 답변 업데이트
스타트업 1년차 커리어 조언 부탁드립니다!! (주니어개발자, 오버스펙등)
- 경력 스타트업 1년 4개월정도 재직 중인 주니어 개발자 - 개발팀 인원 cto, 개발팀장, 팀원 5명(백4, 프론트1) - 사용한 기술 스택 spring mvc, jpa, spring webflux, r2dbc, postgresql, mongodb,kafka, elasticsearch, logstash, docker, rabbitmq, redis - 현재까지의 상황 사내에 기술적으로나 커리어적 방향성을 물어볼 사람이 없어서 질문 올립니다. 어플리케이션 90 프로가 웹플럭스로 개발이 되었으며 mvc개발에 대해서는 작은 어플리케이션 개발이 전부였습니다. cto는 전적으로 개발팀장에게 전적으로 의존해서 기술스택 모두 팀장이 정했습니다. 팀원으로 기술 선택에 의견을 내기도 했지만 권위적인 태도거나 저의 지식이 부족해서 근거 없이 받아들이기도했습니다. 또한 일방적인 개발 팀장의 기술 선택에 cto도 크게 반발 없이 받아들였습니다. 매 프로젝트마다 팀원 모두가 사용 경험이 없는 새로운 기술스택이 도입되었고, 심지어 러닝커브를 고려한 일정을 잡아주지 않았습니다. 기술을 깊게 탐구해가며 쓰지 못하고 다음 프로젝트 하기 바쁜 일정이어서 이직 준비하기는 현실적으로 힘들었습니다. 사용한 기술 스택은 맞지만 딥다이브한 기술이 없으며, 이직을 위한 기술스택 (mvc, jpa 등)을 현재 업무에서 사용할 여지는 없어 보여서 아래와 같이 계획을 짰습니다. 제가 생각한 방향성이 맞는지 선배님들 조언 부탁드립니다. 1. 이력서에는 깊게 사용하지않은 기술스택은 뺀다. 2. 이직을 위한 기술 스택(mvc, jpa등) 사이드 프로젝트로 실제 사용자에게 출시한다는 생각으로 공부해서 포트폴리오화 한다.
개발자
#주니어
#이직
답변 1
댓글 0
추천해요 10
조회 2,393