전체보기21 자바 - 시작 프로그래밍이란 컴퓨터에게 일을 하도록 명령어를 만드는 것이다.여기서 프로그래밍 언어를 컴퓨터가 알 수 있는 언어로 바꿔주는 일을 컴파일이라고 한다.기계어로 번역을 해주는 프로그램을 컴파일러라고 함 (자바 설치시 자바 컴파일러도 설치 됨) 이제 이클립스를 이용하여 첫 프로그래밍을 해보자.'Create a JAVA project' 를 클릭프로젝트 이름은 처음 생성하는 것이니 'Frist' 로 해보겠다.이렇게 프로젝트가 생성되었다.이제 src를 우클릭하고 new를 클릭하여 패키지(Package)를 생성해보자.패키지 이름도 'first'그다음 단축키 'Ctrl+N'을 눌러 'Class'를 생성해보자.검색란에 class를 검색하면 나온다.클래스 이름은 똑같이 'HelloWorld'그리고 아래 public stat.. 공부 2024. 9. 11. CS 면접 질문 준비 1.샤딩의 개념 샤딩은 데이터베이스의 수평 확장을 위한 기술로, 대규모 애플리케이션에서 데이터를 분산 저장하고 처리하기 위해 사용됩니다. 일반적으로, 데이터베이스는 단일 서버에 저장되고 관리됩니다. 그러나 데이터베이스가 커지고 트래픽이 증가하면 단일 서버로는 처리하기 어려울 수 있습니다. 이런 상황에서 데이터베이스 성능을 향상시키기 위해 수평 확장이 필요합니다. 수평 확장은 여러 서버에 데이터를 분산시켜 처리 능력을 확장하는 것을 의미합니다. 샤딩은 수평 확장을 위한 한 가지 접근 방식입니다. 샤딩을 사용하면 데이터베이스는 여러 개의 샤드(shard)로 나뉘어져 각각의 샤드는 독립적으로 데이터를 저장하고 처리합니다. 각 샤드는 서로 다른 서버 또는 논리적 단위에 할당될 수 있습니다. 예를 들어, 사용자 .. 공부 2023. 7. 5. 파이널 프로젝트 후기 3주간의 프로젝트가 끝났다. 우리 1팀은 '대회 결과 기록 시스템' 을 구상해보기로 했다. 일단 아키텍쳐 구성 전 기능요구사항, 인프라 요구사항은 이렇다. 기능요구사항 로그인을 통한 토큰 발급 비공식 기록 입력, 조회 대회 참가자 조회 공식기록 입력, 조회 공식기록에 따라 참가자 포인트 지급 자신의 포인트 확인 인프라 요구사항 가용성, 내결함성, 확장성, 보안 CI/CD 파이프라인 구축 유저 데이터베이스 분리 서비스 간 느슨한 결합 시각화된 모니터링 시스템 그 후 이런식으로 틀을 구성하여 분류하였다. 아키텍처의 완성은 이런식으로 되었다. 처음 사용해보는 Cognito, Grafana, Bastion Server, SSH-Tunneling 등이 생소하여 고전을 겪었다. (Grafana는 수.. 공부 2023. 6. 29. 지속적 통합 - CI/CD 리뷰 서비스가 사용자에게 도달하기까지 출시 기한을 정해놓고 소프트웨어 완성 폭포수(WaterFall) 모델 문제점 출시 시점에 소프트웨어 신뢰성, 안정성을 보장 할 수 없음 출시를 약속하고 뚜껑을 열어봤을 때, 산더미처럼 쌓여있는 버그 소프트웨어 안정성 개선을 위한 노력 베타 버전 등을 통한 테스트 특징 사용자가 항상 최신 상태로 업데이트해야 함 버그수정을 사용자에게 전달하기 매우 어려움 여전히 모바일 애플리케이션이 사용하는 전달 방식 고객의 요구에 민첩하게 대응하여 지속적 전달 애자일(Agile) 모델 Saas(Software as a Service) 서비스로서의 소프트웨어 브라우저에 접속하기만 해도, 새 버전을 즉시 사용 가능 장점 사용자 업데이트에 대한 걱정에서 벗어남 하루에 여러번 릴리즈도 가능 다양한.. 공부 2023. 4. 20. Chapter - 수평 확장 Auto Scaling Group Auto Scaling은 미리 정해 놓은 규칙에 따라 워크로드(작업량)를 자동으로 확대 또는 축소할 수 있는 기술로 클라우드가 제공하는 탄력성에 의해 만들어지고, 사용자의 요구 수준을 반영할 수 있는 기술. Auto Scaling을 이용하면 처리 요구량이 급등하는 시기, 즉 피크 워크로드에 맞춰 새 리소스를 자동으로 추가하고 환경설정하고, 처리 요구량이 줄어들면 해당 리소스를 감소시키기 때문에, 과잉 프로비전을 할 필요성이 사라짐. 프로비전(provision) 필요한 컴퓨팅 리소스들을 필요한 곳에 배치, 유휴 자원들을 다시 회수하는 일련의 작업들을 의미. Auto Scaling의 장점 동적 스케일링 : Auto Scaling의 가장 큰 장점은 사용자의 요구 수준에 따라 .. 공부 2023. 4. 20. AWS - 클라우드 컴퓨팅 클라우드 컴퓨팅의 세가지 모델 IaaS(Infrastructure as a Servic) 일반적으로 네트워킹 기능, 컴퓨터(가상 또는 전용 하드웨어) 및 데이터 스토리지 공간에 대한 액세스를 제공. PaaS(Platform as a Service) PaaS를 사용하면 기본 인프라를 관리할 필요가 없어 애플리케이션 개발과 관리에 집중할 수 있음. SaaS(Software as a Service) 서비스 공급자에 의해 실행되고 관리되는 완전한 제품을 제공. 대부분 SaaS라고 하면 웹 기반 이메일과 같은 최종 사용자 애플리케이션을 말함. 공부 2023. 4. 14. 네트워크 기초 - 아키텍처를 구성하는 요소들 프록시(Proxy) 원 서버를 대리하여 통신하며, 캐시, 로드밸런서, 보안 등 중계 역할을 하는 서버. 프록시 서버가 중간에 위치하기 때문에 클라이언트는 프록시 서버를 '서버'로 인식 서버 입장에서 프록시 서버를 '클라이언트'로 인식. 포워드 프록시(forward proxy) 일반적인 프록시 서버를 말함. 클라이언트-서버 구조에서 클라이언트 쪽을 대리, 클라이언트에서 서버로 리소스를 요청할 때 직접 요청하지 않고 프록시 서버를 거침. 리버스 프록시(reverse proxy) 포워드 프록시의 반대 개념. 애플리케이션 서버의 앞에 위치, 클라이언트가 서버에 요청할 때 리버스 프록시를 호출, 리버스 프록시가 원 서버로부터 응답을 받아 다시 클라이언트에 전송. 로드밸런서(load balancer) 네트워크 트래.. 공부 2023. 4. 7. 네트워크 기초 - OSI 7계층과 TCP/IP 4계층 공부 목표OSI 7계층 모델과 TCP/IP 4계층 모델을 기반으로 한 네트워크 흐름에 대해 이해할 수 있다.TCP/IP 패킷이 왜 필요한 지 설명할 수 있다.TCP와 UDP의 차이에 대해 설명할 수 있다.데이터 링크 계층과 물리적 계층에 대해서 설명할 수 있다.HTTP 기본 동작과 특징에 대해 이해할 수 있다.상태유지(Stateful)과 무상태(Stateless)의 개념에 대해 설명할 수 있다.HTTP 메시지 구성에 대해 설명할 수 있다.프록시, 로드밸런서에 대해 설명할 수 있다.캐시의 기본 원리와 CDN에 대해 설명할 수 있다.프록시 서버를 만들고, 프록시 캐시를 컨트롤 할 수 있다.아키텍처의 구성요소에 대해서 알 수 있다. OSI 7계층 모델과 TCP/IP 4계층 OSI 7계층은 네트워크를 7개의 계.. 공부 2023. 4. 6. 실습과제 1 - 회고 쇼핑몰 API 명세를 작성하고 구현하는 팀 프로젝트 실습을 진행해 보았습니다. 쇼핑몰 요구사항 사용자는 모든 상품을 조회할 수 있다. 사용자는 특정 분류의 상품을 조회할 수 있다.(상품분류, 브랜드명, 가격, 상품명) 사용자의 타입이 판매자인 경우 자신의 상품을 등록할 수 있다. 사용자는 상품을 장바구니에 담을 수 있다. 사용자는 자신의 장바구니를 조회할 수 있다. 사용자는 자신의 장바구니에 있는 상품의 수량을 변경시킬 수 있다. 사용자는 상품을 자신의 장바구니에서 제외할 수 있다. 위 항목들을 바탕으로 API 명세를 작성해 보았습니다. https://velog.io/@ostarry/%EC%87%BC%ED%95%91%EB%AA%B0-API-%EB%AA%85%EC%84%B8-%EC%88%98%EC%A0%9.. 공부 2023. 4. 5. 데이터베이스 실습 명령어 정리 데이터베이스 파이프라인 실습 과정중 사용하거나 수정된 명령어 정리 parser.js let regexDate = /\[(.+)\]/g 대괄호로 묶인 문자열, 즉 "[31/Mar/2023:13:30:00 +0000]"와 같은 로그 항목에서 날짜와 시간을 추출하는 정규식을 생성하는 것 let matchDate = regexDate.exec(raw)[1]; 이전에 생성한 'regexDate' 정규식을 사용하여 로그 항목에서 날짜와 시간을 추출한 후, 추출된 첫 번째 매치를 변수 'matchDate'에 할당하는 코드. const regexWithQoute = /\"([^\"]+)\"/g; 큰 따옴표로 묶인 문자열을 찾아내는 정규식을 생성하는 코드. const result = [...raw.matchAll(reg.. 공부 2023. 3. 31. 데이터베이스 - 데이터 파이프라인 데이터 파이프라인 데이터의 분석을 용이하기 위한 과정. 다양한 데이터의 소스로부터 원시 데이터를 수집하여 분석을 위해 데이터 웨어하우스와 같은 별도의 데이터 저장소로 이전하는 과정. 데이터 파이프라인은 , MLOps를 실천하기 위해 사전에 준비되어야 할 필수적인 단계. OLTP vs OLAP OLTP Online Transaction Processing의 약자로 이 데이터베이스는 트랜잭션에 포커스가 맞춰져 있음. 적재된 데이터를 다양한 방법으로 분석하는 데 포커스를 맞춤. OLTP는 데이터 분석이 불가능한 것이 아니지만 여러 테이블을 함께 묶어 조회하려면 복잡도가 늘어나고 그로 인해 기본적인 트랜젝션에도 성능상 영향을 줄 수 있음. OLAP Online Analytical Processing의 약자로 적.. 공부 2023. 3. 30. Git - Branch 브랜치의(Branch) 개념과 종류, 주요 명령어 브랜치란? 브랜치란 독립적으로 어떤 작업을 진행하기 위한 개념. 개발을 하다보면 한 페이지 안의 여러 기능을 따로 구현하기 위하여 코드를 여러 개로 복사해야 하는 일이 자주 생김. 브랜치 기능을 활용하면, 코드를 통째로 복사한 후 원래 코드가 변경될 우려 없이 독립적으로 개발할 수 있음. 브랜치의 종류 통합 브랜치 (Integration Branch) 배포될 소스 코드가 기록되는 브랜치. Github Repository를 생성하게 되면 기본적으로 main 브랜치가 생김. 해당 프로젝트의 모든 기능이 정상적으로 작동하는 상태의 소스코드가 담겨 있음. 피처 브랜치 (Feature Branch) 기능 추가, 버그 수정과 같이 단위 작업을 위한 브랜치. 통합 브.. 공부 2023. 3. 27. 이전 1 2 다음