[목차]310 [2023년 상반기 다우기술 웹 어플리케이션 개발] 신입 최종 합격 후기 서류 지원 싸피 3차 프로젝트를 진행하던 시점에 '다우기술' 기업의 공고가 올라왔다. 다우 기술 신입 개발자 초봉이 5100만원 정도라고 들었고 개발 기술을 배울 수 있는 상당히 좋은 기업이라고 생각했다. 개발 직무로는 "백 오피스 및 경영지원 시스템 개발" 신입 하나만 올라와있었기 때문에 해당 직무로 지원을 하였다. 지원 문항은 [자기소개], [지원동기], [직무적합성], [희망업무]에 대해서 작성하였다. 또한, 깃허브, 블로그, 포트폴리오를 기재할 수 있는 칸이 있었기 때문에 그동안 내가 정리해놨던 자료를 제출하였다. 지원 문항[자기소개]본인 성격의 강/약점에 대해서 실제 사례를 포함하여 작성해주세요. [지원동기]본인이 회사를 선택하는 기준을 바탕으로 우리 회사를 선택한 이유를 작성해주세요 [직.. 기타/인터뷰 2023. 6. 6. [기술적 선택] JPA - Optimistic Lock 도입 이유 및 적용 방법 '바꾸바꾸' 프로젝트는 Voda, HelloWorld 이전에 싸피에서 진행한 공통 프로젝트이다. 해당 프로젝트에서 담당했던 역할 중에 다음과 같은 문제가 발생하였다. 바꾸바꾸 프로젝트(물건 교환 플랫폼)에서 물건 교환 신청을 요청할 때 하나의 아이템은 최대 10명의 사용자가 요청이 가능하다. 만약 하나의 아이템의 요청 상태가 7명일 때 5명의 사용자가 동시 요청을 하게 된다면, 그 중 3명의 사용자는 요청이 완료돼야하고 2명의 사용자는 요청이 취소돼야한다. 하지만 프로젝트 코드에서는 이러한 동시성 이슈 문제를 해결할 수 있는 로직이 구현되어있지않았다. 즉, 하나의 아이템에 12명의 사용자가 요청 완료가 처리된다. 왜 이러한 문제가 발생했는지, 그리고 이를 해결하기 위해 어떠한 기술을 도입했는지에 대한 회.. 프로젝트/기술적 선택 2023. 6. 6. [기술적 선택] Elasticsearch 도입 이유 및 성능 측정 ELK-Stack의 E는 Elasticsearch를 의미한다. 필자는 해당 기술을 사용해 로그 수집의 기능을 구현하였고, 또 한가지가 더 있다. Elasticsearch를 이용하여 프로젝트의 핵심 기능인 검색 서비스를 추가한 것이다. 필자가 진행한 프로젝트는 '개발자 커뮤니티 사이트'이며 지금의 티스토리처럼 게시글을 업로드할 수 있다. 또한, 게시글을 업로드하게 되면 남들이 올린 게시글들이 모두 통합된 커뮤니티 페이지에서 보여진다. 해당 페이지에서 찾고자 하는 키워드로 검색을 하면 제목에 해당되는 글뿐만 아니라 내용에도 해당 키워드가 존재한다면 검색이 가능하다. 그냥 관계형 데이터 베이스에서 like문을 활용하여 키워드 검색을 하면 되는 거 아니냐는 질문이 들어올 수도 있다. 하지만 키워드 검색을 위해 .. 프로젝트/기술적 선택 2023. 6. 6. [기술적 선택] 쿼리 성능 개선을 위한 INDEX 적용 프로젝트에서 쿼리 성능을 높이기 위해 아래와 같은 방식을 도입하여 로컬에서 성능 테스트를 하였다. 해당 테스트를 통해 쿼리 성능의 차이를 보고 프로젝트에 적용하게 되었다. 저장 프로시저 사용하기 프로시저란 SQL 문장을 선언해서 MySQL에 저장하고 해당 SQL 을 마치 함수처럼 사용하는 것이다. 즉, 만들어 두면 함수 호출하듯이 편하게 사용하는 것이다. 프로시저 활용 create database academy; use academy; 먼저, academy 라는 데이터베이스를 만들고 해당 데이터베이스를 사용한다. create table user ( id int not null, name varchar(100), campus varchar(100), class int, gi int, PRIMARY KEY .. 프로젝트/기술적 선택 2023. 6. 6. [문제점] - HelloWorld Project 문제점 I. SSE 연결 지연 현상 HTTP1.1 - Http2.0 문제점 해결 Server-sent Events 기법은 Web Browser의 간섭없이 Server에서 Web Browser 단방향으로 Event를 전송하는 기법이다. 즉, Web Browser가 Server의 Event를 Subscribe를 통해서 Server의 Event를 전송받는 기법이다. Web Browser에서 Server로는 Event를 전송할 수 없다. 위의 그림은 Server-sent Events 기법을 나타내고 있다. Web Browser는 Server에게 특정 Event를 Subscribe하는 요청 전송한다. 이후에 Server에서는 해당 Event가 발생시 Web Browser에게 해당 Event를 전송한다. 하지만, .. 기타/인프라 구축과정 2023. 6. 5. [Infra] 10. 최종 아키텍처 - HelloWorld Project 개발자 개인 브랜치에서 Remote 환경의 Develop 브랜치에 Merge를 하게 되면 자동으로 빌드가 진행된다. 해당 빌드는 깃랩의 WebHook 설정과 젠킨스 설정을 통해 이루어진다. [Back] 1. 백엔드 개발자가 Develop-BE로 Merge를 진행한다. 해당 브랜치에는 Back 프로젝트만 존재한다. 2. 젠킨스에서 깃랩에 Merge된 Develop-BE 브랜치의 프로젝트 파일들을 빌드한다. 2-1. MainAPI : 서버에 존재하는 .yml 파일을 통합시켜 빌드를 진행한다. jar 파일이 생성되면 배포 폴더로 이동. 2-2. Noitfy : 서버에 존재하는 .yml 파일을 통합시켜 빌드를 진행한다. jar 파일이 생성되면 배포 폴더로 이동. 2-3. Story : 서버에 존재하는 .yml .. 기타/인프라 구축과정 2023. 6. 5. [Infra] 9. Sub 서버 ELK & 보안 설정 - HelloWorld Project /home/ubunt/elk/docker-compose.yml version: '3' services: elasticsearch: image: docker.elastic.co/elasticsearch/elasticsearch:7.10.1 container_name: elasticsearch command: > sh -c "bin/elasticsearch-plugin install analysis-nori && exec /usr/local/bin/docker-entrypoint.sh" ports: - "9200:9200" - "9300:9300" environment: - discovery.type=single-node volumes: - ./elasticsearch.yml:/usr/share/elasti.. 기타/인프라 구축과정 2023. 6. 1. [Infra] 8. Main 서버 FileBeats - HelloWorld Project FileBeats와 관련된 메인 서버의 인프라 구축 내용을 정리하려고 한다. back, notify, story 애플리케이션 서버가 존재하고 각각은 Blue-Green 무중단 배포로 만들어지는 컨테이너가 존재한다. 이때 생성되어진 각각의 컨테이너에 생성된 로그들을 수집하여 카프카로 로그 데이터를 보내줘야한다. * back은 기본적인 RestAPI를 담당하는 서버이다. 이름을 너무 대충 지었다. back/docker-compose.blue.yaml version: '3.7' services: api: image: ${DOCKER_REGISTRY}/${DOCKER_APP_NAME}:${IMAGE_TAG} container_name: ${DOCKER_APP_NAME}-blue environment: - LAN.. 기타/인프라 구축과정 2023. 6. 1. [Infra] 7. ELK Stack & Kafka 흐름 - HelloWorld Project Elastic Stack(ELK + Beats) Kafka를 추가하여 구현하였다. Kafka 를 도입하는 많은 이유 중 하나는 트래픽이 몰리면 Logstash, Elasticsearch 만으로는 부하를 견디기 힘들다고한다. 일반적으로 분산 메시징 시스템으로서, 로그 또는 이벤트 데이터를 수집하고 처리하는 중간 계층 역할을 한다. 이 아키텍처의 큰 장점 중 하나는 Kafka가 로그 데이터의 흐름을 안정화시키고 시스템이 부하에 대응할 수 있도록 해준다. Kafka Kafka는 Pub-Sub 모델을 가지는 분산 메시징 플랫폼이다. 기존 메시징 시스템처럼 Broker 가 Consumer 에게 직접 메시지를 전송하는 방식이 아니라, Consumer가 Broker 로부터 직접 메시지를 가져가는 방식이다. Produ.. 기타/인프라 구축과정 2023. 6. 1. [Infra] 6. 무중단 배포 - HelloWorld Project 이전에 정리하는 게시글에서 Back과 Front를 배포를 할 때 “deploy.sh”를 통해 진행된다. 해당 파일은 어떠한 컨테이너를 띄울지에 대한 쉘 스크립트로 작성된 파일이며, 젠킨스 파이프라인에서 해당 파일을 실행하여 “Blue-Green” 무중단 배포를 진행하게 된다. 필자가 진행한 프로젝트는 EC2 서버 하나로 진행을 했었고 컨테이너들을 이용하여 "Blue-Green" 배포 전략을 활용하였다. * 추후 EC2 서버 하나를 뒤늦게 발급받긴하였음 애플리케이션 서버를 실행한다는 것은 최소 1개의 관련 컨테이너가 구동중이여야하며, 만약 해당 애플리케이션 서버가 업데이트를 하는 경우, 구동 중인 컨테이너는 다운되고 빌드와 배포하는 그 시간동안 페이지를 찾을 수 없게된다. 해당 프로젝트에서 진행한 “Blu.. 기타/인프라 구축과정 2023. 5. 24. 이전 1 2 3 4 5 6 7 ··· 31 다음 반응형