- [로드맵] Testing2024-12-19 11:18:03테스트는 소프트웨어나 시스템의 기능, 성능, 품질을 평가하여 지정된 요구 사항과 표준을 충족하는지 확인하는 체계적인 프로세스이다. 여기에는 단위 테스트(개별 구성 요소 테스트), 통합 테스트(구성 요소 간 상호 작용 확인), 시스템 테스트(전체 시스템의 동작 평가), 수용 테스트(사용자 요구 사항 충족 확인)를 포함한 다양한 방법론과 수준이 포함된다. 테스트는 수동 또는 자동화 될 수 있으며 결함을 식별하고, 기능이 의도한 대로 작동하는지 확인하고, 시스템이 다양한 조건에서 안정적으로 수행되는지 확인하는 것을 목표로 한다. 효과적인 테스트는 고품질 소프트웨어를 제공하고 배포 전에 위험을 완화하는데 필수적이다. ref) Integration Testing(통합 테스트)ref) Unit Testing(단위 ..
- [로드맵] Web Security2024-12-17 10:27:16웹 보안은 데이터 기밀성, 무결성 및 가용성을 보장하기 위해 웹 애플리케이션을 위협과 취약성으로부터 보호하는 것을 포함한다. 주요 관행에는 강력한 인증 및 권한 부여 매커니즘, 안전한 데이터 전송을 위한 암호화(예: SSL/TLS) 사용, SQL 주입 및 크로스 사이트 스크립팅(XSS)과 같은 공격을 방지하기 위한 사용자 입력 검증이 포함된다. 보안 코딩 관행, 효과적인 세션 관리, 정기적인 업데이트 및 패치는 보안을 유지하는데 필수적이다. 또한 침투 테스트 및 취약성 평가를 포함한 지속적인 보안 테스트는 잠재적인 약점을 식별하고 해결하여 애플리케이션을 보호하고 사용자 신뢰를 유지하는데 도움이 된다. MD5더보기MD5(Message-Digest Algorithm 5)는 널리 사용되는 암호화 해시 함수로,..
- [로드맵] Caching2024-11-25 09:18:51캐싱은 컴퓨팅에서 자주 액세스하는 데이터를 빠르게 저장하고 검색하여 원래의 느린 소스에서 반복적으로 페치할 필요성을 줄이는데 사용되는 기술이다. 기본 저장소보다 액세스 속도가 빠른 위치에 데이터 사본을 보관하는 것을 포함한다. 캐싱은 브라우저 캐싱, 애플리케이션 수준 캐싱, 데이터베이스 캐싱을 포함한 다양한 수준에서 발생할 수 있다. 대기 시간을 줄이고, 네트워크 트래픽을 줄이며, 서버 또는 데이터베이스의 부하를 낮춰 성능을 크게 향상시킨다. 일반적인 캐신 전략에는 시간 기반 만료, 가장 최근에 사용(LRU) 알고리즘, 쓰기-통과 또는 쓰기-다시 쓰기 정책이 있다. 캐싱은 속도와 효율성을 향상시키지만 데이터 일관성과 신선도를 유지하는데 어려움이 있다. 효과적인 캐시 관리가 동적 시스템에서 성능 향상과 최..
- [로드맵] Learn about APIs2024-11-20 09:37:04API(Application Programming Interface)는 서로 다른 소프트웨어 애플리케이션이 서로 통신하고 상호 작용할 ㅅ ㅜ있도록 하는 정의된 규칙과 프로토콜의 집합이다. 개발자가 내부 작동 방식을 이해할 필요 없이 서비스, 애플리케이션 또는 플랫폼의 기능이나 데이터에 액세스하고 조작할 수 있는 표준화된 방법을 제공한다. API는 공개 또는 비공개일 수 있으며 일반적으로 서로 다른 시스템을 통합하고 타사 개발을 용이하게 하며 애플리케이션 간 상호 운용성을 가능하게 하는데 사용된다.일반적으로 엔드포인트, 요청 방법(GET, POST, PUT 등) 및 상호 작용할 데이터 형식(JSON 또는 XML 등)이 포함된다.ref) API에 대한 다양한 접근 방식들ref) API 설계 원칙ref) 인증..
- [로드맵] Relational Database2024-11-18 09:28:28관계형 데이터베이스는 스키마를 사용하여 데이터 관계와 제약 조건을 정의하고 행과 열이 있는 구조화된 테이블로 데이터를 구성하는 데이터베이스 관리 시스템(DBMS)의 한 유형이다. 관계형 데이터베이스는 구조화된 쿼리 언어(SQL)를 사용하여 데이터를 쿼리하고 관리하며 데이터 검색, 삽입, 업데이트 및 삭제와 같은 작업을 지원한다. 관계형 데이터베이스는 키(기본 및 외래)와 제약 조건(예: 고유 및 null이 아님)을 통해 데이터 무결성을 강화하며 복잡한 쿼리, 트랜잭션 및 데이터 관계를 효율적으로 처리하도록 설계되었다. 관계형 데이터베이스의 예로는 MySQL, PostgreSQL 및 Oracle Database가 있다. 구조화된 데이터 저장, 강력한 일관성 및 복잡한 쿼리 기능이 필요한 애플리케이션에 일반..
- [로드맵] GitHub / GitLab / Bitbucket2024-11-17 13:14:46GitHubGitHub는 Git을 사용한 버전 제어 및 협업을 위한 웹 기반 플랫폼이다.Microsoft가 소유하고 있으며, 소프트웨어 개발을 위한 호스팅을 제공하고 기본 Git 기능을 넘어서는 기능을 제공한다.GitHub에는 프로젝트 관리, 코드 검토 및 소셜 코딩을 위한 도구가 포함되어 있다. 주요 기능으로는 코드 저장을 위한 레포지토리, 변경 사항을 제안하고 검토하기 위한 풀 리퀘스트, 버그 및 작업을 추적하기 위한 이슈, 워크 플로 자동화를 위한 작업이 있다. 공개 및 비공개 레포지토리를 모두 지원하므로 오픈 소스 프로젝트와 비공개 개발에 인기가 있다.레포지토리 포킹 및 인라인 코드 주석과 같은 GitHub의 협업 기능은 팀 개발 밑 커뮤니티 기여를 용이하게 한다.광범위 한 통합과 대규모 사용자 ..
- [백엔드 로드맵] 입출력(IO / NIO)2024-01-11 21:35:32입출력 IO와 NIO Java의 입출력 관련 클래스는 너무나 많은데, 크게 Java.io 패키지와 java.nio 패키지로 구분할 수 있다. 둘의 차이를 쉽게 말하면 IO의 기능들을 개선하고 새로운 기능을 추가(대표적으로 비동기 / Non-Blocking 지원)하여 나온 것이 NIO라고 생각하면 된다. 그럼 무조건 IO보다 NIO가 좋은가? 답은 아니다. NIO가 많은 기능을 개성한 것은 사실이나 특정 상황에서는 IO보다 성능이 떨어지는 경우도 있다. [1] IO (Old IO) 대략적인 IO 패키지 구조이다. 1. File 클래스 파일의 위치 정보를 가진다. 파일의 내용이 아닌 파일 자체를 다룬다. 파일 자체에 대한 정보를 가져오고 다루는 메서드를 포함하고 있다. File 정보를 String 타입으로 ..
- [백엔드 로드맵] 언어 배우기 - JAVA2024-01-04 00:08:57백엔드 개발자로서 다룰 수 있는 언어가 다양하다면 많은 장점이 있을 것이다. 하지만 여러 언어를 조금씩 파는 것보다 주 언어를 더 깊게 파는 것이 중요하다고 생각하여 Java에 대해 공부하였다. 1. Java 기본 1-1. 기동 원리 1. 시스템으로부터 메모리 할당(JVM) 2. Java 컴파일러에 의해. java 형식에서. class 형식으로 변환(바이트 코드 변환) 3. 클래스 로더에 의해 클래스 파일들은 JVM에 로드된다. 4. 실행기(Execution Engine)에 의해 클래스 파일을 해석하며 프로그램 실행 1-2. 변수 지역 변수 : 함수 안에 선언 / 함수가 실행될 때 전역 변수(필드 변수) : 함수 밖에 선언 클래스 변수 : static 변수 인스턴스 변수 : 객체 변수 변수의 사용처에 따..